1

だから私はリストのアイテムが選択された後に新しいアクティビティを開始しようとしています....私が読んだものに基づいてかなり基本的です。私はまた、エクストラで値を送信しようとしています。そのため、リスト内のアイテムを選択すると、新しいアクティビティが開始され、エクストラが設定されますが、エクストラの値は空になります。新しいアクティビティのインテントのIDが最初のアクティビティのIDと一致しないことに気づきました。それが想定されているかどうかはわかりません。

アクティビティ1から:

public void onItemClick(AdapterView<?> parent, View view,
              int position, long id) {
                  Intent displayIntent = new Intent(getApplicationContext(), DisplayActivity.class);
              int index  = _names.indexOf(((TextView) view).getText());
              displayIntent.putExtra("ID_TAG", ids.get(index));
              startActivity(displayIntent);
          }

Activity2(DisplayActivity)で

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle extras = getIntent().getExtras(); 
        _hiveIndex = extras.getLong("ID_TAG");
}

なぜ私が価値を得られないのか、何か考えはありますか?エクストラの下のmMapは、最初のインテントでは前にハッシュマップに設定されていますが、activity2ではnullです。

4

3 に答える 3

2

Bundleオブジェクトを使用しないActivity1のdisplayIntent.putExtra( "ID_TAG"、ids.get(index))、Bundleオブジェクトを配置するには、代わりにputExtras(Bundle bundle)メソッドを使用する必要があります。 Actvitiy2。Activity1のputExtraメソッドでBundleオブジェクト以外を渡しましたが、Activity2でBundleオブジェクトを取得しようとすると、何も取得されません。 displayIntent.putExtra( "ID_TAG"、ids.get(index)) ; displayIntent.putExtras(バンドルオブジェクト)に置き換えます;

または、メソッドを使用できますgetIntExtra(String name, int defaultValue)

于 2011-07-02T04:19:50.020 に答える
0

Activity1には、整数を格納します。Activity2では、Longを取得しようとします。Activity2にgetIntegerを格納するか、Activity1にLongを格納する必要があります。理解?

于 2011-07-02T03:55:26.273 に答える
0

これはどう?

DisplayActivityでは、

使用するgetIntent().getIntExtra("ID_TAG")

于 2013-04-05T01:17:22.723 に答える