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(...)

是一样的