I have an app that goes between many different activities. One activity, my main activity, has it's behavior dependent on which activity, within the app, launched the main activity. I thought i could log this by having every other activity put an extra called "launcehdFrom" into the intent, which contains a string that has the name of hte activity that called the main activity. The problem i ran into is that once that value has been set it can't be overriden by another activity. I havne't found a good straightforward method for doing this. Any advice??
The following code is called from onResume() in my main activity:
private void processIntentRequest(){
Intent intent = getIntent();
ProcessIntentRequestType caller = (ProcessIntentRequestType)intent.getSerializableExtra("launchedFrom");
switch(caller){
case startUpActivity:
load(this.myObj);
break;
case otherActivity:
int uri = integer.parseInt(this.getIntent().getExtras().getString("uri"));
load(this.myObj, uri);
break;
default:
load(this.myObj, 1);
}
This is the code that launches the main activity the first time:
public void launchMainActivity(Obj myObj){
Intent launchMain = new Intent(this, mainActivity.class);
login.putExtra("launchedFrom", ProcessIntentRequestType.startupActivity);
startActivity(launchMain);
}
This is the code that launches the main activity from some other activity after it has been loaded atleast once by the startup activity:
protected void launchMainActivity(Obj myObj, HelperObj helper) {
String uri = helper.uri;
Intent mainActivity = new Intent(this, MainActivity.class);
mainActivity.putExtra("uri", uri);
mainActivityputExtra("launchedFrom", ProcessIntentRequestType.otherActivity);
startActivity(mainActivity.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
finish();
}