intent.getStringExtra 始终处于"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);
}
});

日志.我给了我:"...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(...)相同

相关内容

  • 没有找到相关文章

最新更新