intent.getStringExtra始终为“ null”

问题描述 投票:1回答:1

这是将字符串添加到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给我:“ ...我/测试:用户名:Chris2”,所以我认为多余的内容已正确添加

但是,在UserFeedActivity类上,如果我尝试使用此代码读取意图:

    Intent intent = new Intent();
    String username = intent.getStringExtra("username");
    Log.i("test2","username: "+username);

日志。我给了我:“ ... I / test2:用户名:null”

我也尝试过

    Bundle bundleEx = intent.getExtras();
    Log.i("trdt3","extras: "+bundleEx);

日志。我给了我:“ ... I / test3:其他:空”

我做错了什么还是什么?

android android-intent null android-intentservice extra
1个回答
1
投票

您正在其他活动中创建全新的意图,因此没有任何额外的内容。在新活动中,您需要像这样呼叫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(...)相同

© www.soinside.com 2019 - 2024. All rights reserved.