намерение.getStringExtra всегда равно нулю

Вот как строка добавляется в намерение.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/test: имя пользователя: Chris2", так что я думаю, что лишнее добавляется правильно

но в классе UserFeedActivity, если я попытаюсь прочитать намерение с помощью этого кода:

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

Log.I дал мне: "... I/test2: username: null"

я тоже пробовал

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

Log.I дал мне: "... I/test3: extras: null"

Я что-то не так делаю или что?


person cparu    schedule 12.05.2020    source источник


Ответы (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(...).

person Tyler V    schedule 12.05.2020