intent.getStringExtra 总是 "null"
intent.getStringExtra is always "null"
这是将字符串添加到 intent.putExtra:
的方式
final ListView listView = findViewById(R.id.userListView);
final ArrayList<String> usernames = new ArrayList<>();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(getApplicationContext(), UserFeedActivity.class);
String username = usernames.get(i);
intent.putExtra("username", username.toString() );
Log.i("test","username: "+username);
startActivity(intent);
}
});
Log.I 给了我:“... I/test:用户名:Chris2”,所以我认为额外的添加是正确的
但是,在 UserFeedActivity class 上,如果我尝试使用以下代码读取意图:
Intent intent = new Intent();
String username = intent.getStringExtra("username");
Log.i("test2","username: "+username);
Log.I 给了我:“... I/test2:用户名:null”
我也试过了
Bundle bundleEx = intent.getExtras();
Log.i("trdt3","extras: "+bundleEx);
Log.I 给了我:“... I/test3: extras: null”
我是不是做错了什么?
您正在另一个 activity 中创建一个全新的 Intent,因此它没有额外内容。在新的 activity 中你需要调用 getIntent()
,像这样
Intent intent = getIntent(); // don't use 'new Intent()' here
String username = intent.getStringExtra("username");
Log.i("test3","username: "+username);
注意调用getStringExtra
只是在内部调用getExtras()
,然后是getString(...)
,所以和使用getIntent().getExtras().getString(...)
是一样的
这是将字符串添加到 intent.putExtra:
的方式 final ListView listView = findViewById(R.id.userListView);
final ArrayList<String> usernames = new ArrayList<>();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(getApplicationContext(), UserFeedActivity.class);
String username = usernames.get(i);
intent.putExtra("username", username.toString() );
Log.i("test","username: "+username);
startActivity(intent);
}
});
Log.I 给了我:“... I/test:用户名:Chris2”,所以我认为额外的添加是正确的
但是,在 UserFeedActivity class 上,如果我尝试使用以下代码读取意图:
Intent intent = new Intent();
String username = intent.getStringExtra("username");
Log.i("test2","username: "+username);
Log.I 给了我:“... I/test2:用户名:null”
我也试过了
Bundle bundleEx = intent.getExtras();
Log.i("trdt3","extras: "+bundleEx);
Log.I 给了我:“... I/test3: extras: null”
我是不是做错了什么?
您正在另一个 activity 中创建一个全新的 Intent,因此它没有额外内容。在新的 activity 中你需要调用 getIntent()
,像这样
Intent intent = getIntent(); // don't use 'new Intent()' here
String username = intent.getStringExtra("username");
Log.i("test3","username: "+username);
注意调用getStringExtra
只是在内部调用getExtras()
,然后是getString(...)
,所以和使用getIntent().getExtras().getString(...)