0

リンク http://developer.android.com/training/basics/firstapp/starting-activity.htmlをたどります

あるアクティビティから別のアクティビティに文字列を送信します.2番目のアクティビティにテキストビューがあり、最初のアクティビティの文字列を表示しようとしましたが、アプリケーションはその行で終了します、

主な活動

Intent intent=new Intent(this,DisplayActivity.class);
    intent.putExtra(EXTRA_MESSAGE,Data);

    startActivity(intent);

アクティビティを表示する

TextView listname;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    listname=(TextView) findViewById(R.id.msg);

     Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    listname.setText(message);
    setContentView(R.layout.activity_display);

アプリケーションは行で終了しますlistname.setText(message);

4

2 に答える 2

2

順序を変更する必要があります。setContentView()ウィジェットの初期化を開始する前に呼び出す必要があります。

setContentView(R.layout.activity_display);
listname = (TextView) findViewById(R.id.msg);

正確にドキュメントが言うこと:

setContentViewメソッドは、レイアウトリソースからアクティビティコンテンツを設定します。リソースが膨らみ、すべてのトップレベルのビューがアクティビティに追加されます。

つまり、setContentView()メソッドはレイアウトインフレーションであり、レイアウトに含まれるUI要素のすべてのインスタンスを作成してから、レイアウトをActivityにアタッチします。したがって、最初にsetContentViewと呼ばれ、次にUI要素の初期化と呼ばれる必要があります。

于 2013-03-16T12:35:15.393 に答える
1

この方法でDisplayActivityで同じコードを試してください..

TextView listname;

@Override

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display);
listname=(TextView) findViewById(R.id.msg);

Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
listname.setText(message);
于 2013-03-16T12:50:37.710 に答える