这是将字符串添加到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);
}
});
日志.我给了我:"...I/测试:用户名:Chris2",所以我认为额外的内容被正确添加
但是,在UserFeedActivity类上,如果我尝试使用以下代码读取意图:
Intent intent = new Intent();
String username = intent.getStringExtra("username");
Log.i("test2","username: "+username);
日志.我给了我:"...I/test2:用户名:空">
我也试过
Bundle bundleEx = intent.getExtras();
Log.i("trdt3","extras: "+bundleEx);
日志.我给了我:"...I/test3:额外:空">
我做错了什么还是什么?
您正在其他活动中创建一个全新的意图,因此它没有额外的内容。在新活动中你需要调用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(...)
相同