2016-11-03 1 views
0

Ich habe drei Aktivitäten. Auf Activity Eins (Navigationsmenü), ich habe eine einfache ClickListener zu starten Activity Zwei.Handle mehrere Intents auf einzelne Aktivität

Intent intent3 = new Intent(this, SettingsActivity.class); 
intent3.putExtra("from", "BaseActivity"); 
startActivity(intent3); 
finish(); 
break; 

Auf Actvity Drei habe ich einige Daten, die ich auf Activity Zwei benötigen. Also habe ich die Daten innerhalb des Bundle wie folgt aus:

//send Data to Setting Activity 
Intent mIntent = new Intent(StartActivity.this, SettingsActivity.class); 
Bundle mBundle = new Bundle(); 
mBundle.putString("from", "SettingsActivity"); 
mBundle.putSerializable("spinnerHashTagItems", (Serializable) spinner_HashTagItem); 
mBundle.putSerializable("spinnerUserItem", (Serializable) spinner_UserItem); 
mBundle.putBoolean("isCheckedHashTag", isCheckedHashTag); 
mBundle.putBoolean("isCheckedHashTagUser", isCheckedHashTagUser); 
mBundle.putBoolean("isCheckedAllFromUser", isCheckedAllFromUser); 
mIntent.putExtras(mBundle); 

Also, wenn ich die Activity Zwei beginnen nur ich die Intent vom ersten Activity erhalten, aber nicht aus dem Dritten:

//get loadet Settings from StartActivity 
Bundle bundle = getIntent().getExtras(); 
if (bundle != null) { 
    //do nothing 
} 

Bundle bundle1 = getIntent().getExtras(); 
spinner_HashTagItems.clear(); 
spinner_HashTagItems = (List<String>) bundle1.getSerializable("spinner_HashTagItem"); 
spinner_userItems.clear(); 
spinner_userItems = (List<String>) bundle1.getSerializable("spinner_userItem"); 
chbox_hashTag.setChecked(bundle1.getBoolean("chbox_hashTag")); 
chbox_hashTagUser.setChecked(bundle1.getBoolean("chbox_hashTagUser")); 
chbox_allFromUser.setChecked(bundle1.getBoolean("chbox_allFromUser")); 

Ich ging mit der Debugger durch die Activity Zwei und erhalten Sie die Bundle von der Activity One. Wie bekomme ich die Bundle von Activity Drei?

+0

wo ist ur 'startActivity (mIntent);'? –

+0

Ich möchte die Aktivität nicht starten. Ich brauche nur die Daten. Aktivität Eins ist die StartActivity, die die Einstellungen beim Start lädt und die Daten an SettingActvity (Aktivität Zwei) gibt. Ich möchte die Einstellungen nicht beim Start der App starten. – dudi

+0

Sie haben einige Daten, die Sie von Aktivität Eins über Aktivität Zwei an Aktivität Drei senden möchten, oder? – vidulaJ

Antwort

0

Verwenden Sie startActivityForResult (Intent intent, int requestCode), um Ihre SettingsActivity von StartActivity zu starten.

Behandeln Sie das Ergebnis in StartActivity:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
if (requestCode == REQUEST_CODE_YOU_USED_TO_START_SETTINGS_ACTIVITY) { 
    if (resultCode == RESULT_OK) { 
     //read the data from the Intent and prepare the Bundle for Activity Two 
    } 
} 
}