2016-10-10 6 views
0

MainActivityAndroid intent.getStringExtra() return null

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); 
     }} 
} 
} 

AddContactActivity

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(); 
} 
} 

AddContactActivity ich bereits verwenden intent.putExtra name.getText(). ToString() und senden Absicht MainActivity

Warum onActivityResult() in MainActivity Log.d Ausgabe ist null?

+4

sind Sie sicher, dass Sie die richtige Absicht verwenden? 'getIntent();'? Ich denke, es muss "Daten" sein ... – Opiatefuchs

Antwort

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); 
    }} 

müssen Sie die Daten verwenden nicht getIntent()

2

Sie verwenden die Absicht, die ursprünglich die Aktivität gestartet hat. Verwenden Sie stattdessen den Intent, der als Parameter gesendet wurde.

0

Es gibt keine Notwendigkeit für

Intent intent = getIntent(); 

Intent ist bereits als Argument dh 'Daten' übergeben

Verwendung dieser Variable zum Extrahieren von Daten. Hoffe, das hilft.

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

Ändern Sie den Code wie dieses

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

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