0

私は1日から2番目のアクティビティを呼び出しています:

Intent intent = new Intent();
intent.setClass(MainActivity.this,  SecondActivity.class);
Bundle b = new Bundle();
b.putInt(SecondActivity.ID,id);
System.out.println("id*"+id);
b.putString(SecondActivity.NAME, name);
System.out.println("name*"+name);
intent.putExtras(b);
startActivity(intent);

LogCat:

11-06 19:33:57.451: I/System.out(7987): id*2
11-06 19:33:57.451: I/System.out(7987): name*MrBlack

2番目のアクティビティ:

public static final String ID = "";
public static final String NAME = "";
................
Bundle extras = getIntent().getExtras();
int id = extras.getInt(ID);

System.out.println("extras.getInt(ID)*"+extras.getInt(ID));
System.out.println("extras.getString(ID)*"+extras.getString(ID));
System.out.println("extras.getString(NAME)*"+extras.getString(NAME));
TextView tvFirmaName = (TextView) findViewById(R.id.tvName);
tvFirmaName.setText(extras.getString(NAME));

LogCat:

11-06 19:33:57.721: I/System.out(7987): extras.getInt(ID)*0
11-06 19:33:57.731: I/System.out(7987): extras.getString(ID)*MrBlack
11-06 19:33:57.731: I/System.out(7987): extras.getString(NAME)*MrBlack

int値2が0として渡される理由と、extras.getString(ID)が "MrBlack"値である理由がわかりません!?

どこが間違っていたのか教えてください。

4

2 に答える 2

4
public static final String ID = "";
public static final String NAME = "";

これらの文字列に値を指定する必要があります。これらは、渡す情報の変数名として機能します。それらの値は、互いに等しくない限り、任意です。

乾杯

于 2012-11-06T20:41:14.060 に答える
1

エクストラはハッシュマップのように機能します。したがって、次のようにする必要があります。

b.putInt("unique key","value");

空の文字列をキーとして使用しているため、「」キーを持つ最初の文字列を返します。

したがって、次のような値を入力してみてください。

b.putInt("ID",id);
b.putInt("NAME",name);
于 2012-11-06T21:31:18.467 に答える