как получить значения из предыдущего действия

#android

#Android

Вопрос:

привет всем, во втором упражнении я устанавливаю некоторые значения и как их перенести в первое упражнение. я использую Bundle для передачи данных. Возникает ошибка NullPointerException.

во второй активности:

     c1.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View view) 
        {
            c1.setChecked(true); 
            Bundle bundle = new Bundle();
            bundle.putString("key1",String.valueOf(c1.getText()));
            Intent myIntent = new Intent(view.getContext(), main.class);
            myIntent.putExtras(bundle);
            startActivityForResult(myIntent, 0);
        }

    });
  

в первом (основном) действии:

     Bundle bundle = this.getIntent().getExtras();
    check = bundle.getString("key1"); // NullPointerException.
  

пожалуйста, помогите мне.

Комментарии:

1. Вы уверены, что String.valueOf(c1.getText()) возвращает некоторое значение, а не null.

2. это не равно нулю в элементе

Ответ №1:

Похоже, что вы запускаете свой secondactivity из своего firstactivity (main). В этом случае вам нужно вернуть данные с помощью finish() , а не снова запускать первое действие с помощью startActivityForResult() .

В вашем secondactivity используйте:

 Bundle bundle = new Bundle();
bundle.putString("key1",String.valueOf(c1.getText()));
Intent myIntent = new Intent(view.getContext(), main.class);
myIntent.putExtras(bundle);
setResult(RESULT_OK, myIntent);
finish();
  

И в onActivityResult() of firstactivity используйте:

 @Override
public void onActivityResult(int reqCode, int resCode, Intent data)
{
    Bundle bundle = data.getExtras();
    check = bundle != null ? bundle.getString("key1") : "";
}
  

Комментарии:

1. void — недопустимый тип для переменной onActivityResult в этой строке public void onActivityResult(int reqCode, int ResCode, Intent data). я поместил это в метод onCreate.

Ответ №2:

Вы должны запустить действие для механизма результата. Итак, когда второе действие выполнено, чтобы вернуть результат первому действию.

Ответ №3:

Mojo Risin прав, вы должны использовать Start Activity для механизма результата.

Вы можете увидеть полное руководство по работе здесьhttp://www.vogella.de/articles/AndroidIntent/article.html#explicitintents

Ответ №4:

 Intent myIntent=new Intent(v.getContext(),detailPage.class);
            myIntent.putExtra("prodId", "data");
            startActivity(myIntent);
  

для извлечения

 String index=""
index=getIntent().getExtras().getString("prodId");
System.out.println("Position :" index);