问题
How to know which parent activity calls the child activity in android?
Assume I have three activities A,B and C. A and B are parent activities. C is the child activity. That means C can be started by either from A or B.
So how can I know which parent activity causes to start the child activity?
The problem is I need to set the back button according to that parent intent.For that I want to override getSupportParentActivityIntent() method and it needs the intent object to start again the parent activity.
Here is the method description in android site
How to get the parent activity to correctly override the getSupportParentActivityIntent() method?
Thanks.
回答1:
I have found how to implement getSupportParentActivityIntent() correctly and using it we can dynamically set the activity to up-button in android. Here how I have achieved it.
Assume we have two activities. Activity A and B. A is the parent activity and B is the child.
So A need to create an intent to start B. It should pass an extra data which is the name of the parent activity. Here in our example it should be 'A'. Here is the code,
Intent intent = new Intent();
intent.putExtra("ParentClassName","A");
startActivity(intent.setClass(A.this, B.class)); //we are starting activity 'B'
Now in activity B we need to override getSupportParentActivityIntent() and it should look like this,
@Override
public Intent getSupportParentActivityIntent() {
Intent parentIntent= getIntent();
String className = parentIntent.getStringExtra("ParentClassName"); //getting the parent class name
Intent newIntent=null;
try {
//you need to define the class with package name
newIntent = new Intent(B.this,Class.forName("com.myapplication."+className));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return newIntent;
}
回答2:
In ur child activity use like
@Override
public Intent getSupportParentActivityIntent() {
String from = getIntent().getExtras().getString("from");
Intent newIntent = null;
if(from.equals("MAIN")){
newIntent = new Intent(this, MainActivity.class);
}else if(from.equals("FAV")){
newIntent = new Intent(this, FavoriteActivity.class);
}
...
return newIntent;
}
before that u need to put from extra value for each of ur source activity say from FavoriteActivity
i.putExtra("from", "FAV");
and for MainActivity use
i.putExtra("from", "MAIN");
来源:https://stackoverflow.com/questions/22088014/how-to-implement-getsupportparentactivityintent-to-set-the-activity-dynamicall