Android intent.getStringExtra() возвращает нуль

#android

#Android

Вопрос:

MainActivity

 public class MainActivity extends AppCompatActivity {
            private static final int REQ_CODE_TO_ADD = 123;
            final ArrayList<Contact> allContact = new ArrayList();
            ArrayList<String> name = new ArrayList();

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

    final Intent intent = new Intent(this,DetailActivity.class);
    Button addbt = (Button)findViewById(R.id.addbt);

public void onClickAdd(View v){
    Intent intent = new Intent(this,AddContactActivity.class);
    startActivityForResult(intent,REQ_CODE_TO_ADD);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == REQ_CODE_TO_ADD){
        if(resultCode == 0){
            Intent intent = getIntent();
            String name2 = intent.getStringExtra("namev");
            String email2 = intent.getStringExtra("emailv");
            String birthday2 = intent.getStringExtra("birthdayv");

            Log.d("AAA",">>>:" name2);

            Contact person = new Contact(name2,email2,birthday2);
            allContact.add(person);
        }}
}
}
  

Добавить contactactivity

 public class AddContactActivity extends AppCompatActivity {
private static final int REQ_CODE_TO_MAIN = 321;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_contact);
}

public void onClickOk(View v){
    EditText name = (EditText)findViewById(R.id.nameet);
    EditText email = (EditText)findViewById(R.id.email);
    EditText birthdate = (EditText)findViewById(R.id.birthdate);

    Intent intent = new Intent();
    intent.putExtra("namev",name.getText().toString());
    intent.putExtra("emailv",email.getText().toString());
    intent.putExtra("birthdayv",birthdate.getText().toString());
    setResult(0,intent);
    finish();
}
}
  

Addcontactivity Я уже использую intent.putExtra name.getText().toString() и отправляю intent в MainActivity

Почему onActivityResult() в выводе MainActivity Log.d имеет значение null?

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

1. вы уверены, что используете правильное намерение? getIntent(); ? Я думаю, это должно быть data

Ответ №1:

 if(resultCode == 0){
        //Intent intent = getIntent();
        String name2 = data.getStringExtra("namev");
        String email2 = data.getStringExtra("emailv");
        String birthday2 = data.getStringExtra("birthdayv");

        Log.d("AAA",">>>:" name2);

        Contact person = new Contact(name2,email2,birthday2);
        allContact.add(person);
    }}
  

вам нужно использовать данные, а не GetIntent()

Ответ №2:

Вы используете намерение, которое изначально запустило действие. Вместо этого используйте Intent, который был отправлен в качестве параметра.

Ответ №3:

Нет необходимости в

 Intent intent = getIntent();
  

Намерение уже передано в качестве аргумента, т.е. «данные»

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

Ответ №4:

 Intent intent = getIntent(); // This line is wrong
            String name2 = intent.getStringExtra("namev");
            String email2 = intent.getStringExtra("emailv");
            String birthday2 = intent.getStringExtra("birthdayv");
  

Измените свой код следующим образом

 if(requestCode==2 amp;amp; resultCode==RESULT_OK){
            Bundle bundle=data.getExtras();// here "data" is your intent
            String string=bundle.getString("message");

            Log.i(TAG,"onActivityResult Called..." string);
        }