Web サイトからテキストを読み取り、そのテキストを変数に保存し、そのテキストを別のアクティビティに表示しようとしている小さなアプリケーションに取り組んでいます。私の主なアクティビティには、「ライセンス契約」と呼ばれるクリック可能なラベルがあり、クリックすると、アプリはサイトからテキストを読み取り、別のアクティビティに移動して、そのテキストをユーザーに表示する必要があります。ただし、ラベルをクリックするたびに、アプリが強制終了します。助言がありますか?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void activity_license(View view) throws IOException{
String stringBuffer;
String text ="";
URL url = new URL("http://something.something.com/LICENSE");
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(url.openStream()));
while((stringBuffer = bufferReader.readLine()) != null){
text += stringBuffer;
}
bufferReader.close();
Intent licenseIntent = new Intent(this, LicenseActivity.class);
licenseIntent.putExtra("LICENSE_AGREEMENT", text);
startActivity(licenseIntent);
}
}
そして、ここにテキストを表示したい 2 番目のアクティビティ コードがあります...
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.TextView;
public class LicenseActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_license);
Intent intent = getIntent();
String licenseText = intent.getStringExtra("LICENSE_AGREEMENT");
TextView lblText = (TextView)findViewById(R.id.lblLicense);
lblText.setText(licenseText);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_license, menu);
return true;
}
}