2016-10-10 79 views
0

MainActivity的Android intent.getStringExtra()返回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我已經使用intent.putExtra name.getText()。toString()和發送意圖MainActivity

爲什麼MainActivity Log.d輸出中的onActivityResult()爲null?

+4

你確定你使用了正確的意圖是什麼? 'getIntent();'?我想它一定是'data' ... – Opiatefuchs

回答

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。使用作爲參數發送的Intent。

0

沒有必要對

Intent intent = getIntent(); 

意圖作爲參數,即 '數據'

使用此已過變量來提取數據。 希望這有助於。

0
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 && resultCode==RESULT_OK){ 
      Bundle bundle=data.getExtras();// here "data" is your intent 
      String string=bundle.getString("message"); 

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