Android Передача Intent Bundle всегда возвращает null - PullRequest
2 голосов
/ 18 января 2020

Я пытаюсь передать текст из настраиваемого диалогового окна в домашнюю активность. Пакет всегда имеет значение null вместо значения, которое я пытаюсь передать, и я не могу понять, почему. Я пытался найти похожие вопросы, но мне еще не удалось найти решение.

Диалог

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_ingredients_dialog);

    Button addButton = findViewById(R.id.addButton);
    addButton.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(AddIngredientsDialog.this,
                            android.R.layout.select_dialog_item, fruits);
                    editText.setAdapter(arrayAdapter);
                    text = editText.getText().toString();

                    Intent intent = new Intent(AddIngredientsDialog.this, AddIngredientsActivity.class);
                    intent.putExtra("Text", text);
                    startActivity(intent);
                    dialog.dismiss();
            }

     });
}

Домашняя активность

 ingredientList = findViewById(R.id.listView);
 ArrayList<String> ingredients = new ArrayList<>();
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_ingredients);

    //bundle
    Bundle extras = getIntent().getExtras();
    text = extras.getString("Text");

    button = findViewById(R.id.add);
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            ingredients.add(text);
            adapter = new ArrayAdapter<>(AddIngredientsActivity.this, android.R.layout.simple_list_item_1, ingredients);
            ingredientList.setAdapter(adapter);
            adapter.notifyDataSetChanged();
        }
    });
}

Ответы [ 3 ]

0 голосов
/ 18 января 2020

Проблема может быть здесь

`text = editText.getText().toString();`

Убедитесь, что вы написали что-то в EditText

0 голосов
/ 18 января 2020

Лучше использовать startActivityForResult, чтобы запустить диалог Activity. Проверьте этот ответ Отправка данных обратно в Основное действие в Android

0 голосов
/ 18 января 2020

В своей домашней деятельности попробуйте использовать getIntent().getStringExtra("Text") вместо extras.getString("Text");

//bundle
text = getIntent().getStringExtra("Text")
...