下面是将字符串添加到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);
}
});
LogI.给了我:"... I/test: username: Chris2",所以我认为添加额外的内容是正确的
但是,在UserFeedActivity类上,如果我尝试用下面的代码读取意图:
Intent intent = new Intent();
String username = intent.getStringExtra("username");
Log.i("test2","username: "+username);
LogI.给了我:"... I/test2: username: null“
我也试过
Bundle bundleEx = intent.getExtras();
Log.i("trdt3","extras: "+bundleEx);
LogI.给了我:"... I/test3: extras: null“
我是不是做错了什么?
发布于 2020-05-12 11:03:00
您在另一个活动中创建了一个全新的意图,因此它没有额外的内容。在新活动中,您需要调用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(...)
相同
https://stackoverflow.com/questions/61742829
复制相似问题