如何知道哪个父活动在android中调用子活动?
假设我有三个活动A,B和C. A和B是父活动。 C是儿童活动。这意味着C可以从A或B开始。
那么我怎么知道哪个父活动导致启动子活动?
问题是我需要根据父intent设置后退按钮。为此我想覆盖 getSupportParentActivityIntent()方法,它需要intent对象再次启动父活动。 / p>
Here is the method description in android site
如何让父活动正确覆盖getSupportParentActivityIntent()方法?
感谢。
答案 0 :(得分:2)
我已经找到了如何正确实现getSupportParentActivityIntent()并使用它我们可以动态地将活动设置为android中的up-button。在这里我是如何实现它的。
假设我们有两项活动。活动A和B.A是父活动,B是孩子。
所以需要创建一个启动B的意图。它应该传递一个额外的数据,这是父活动的名称。在我们的示例中,它应该是'A'。这是代码,
Intent intent = new Intent();
intent.putExtra("ParentClassName","A");
startActivity(intent.setClass(A.this, B.class)); //we are starting activity 'B'
现在在活动B中,我们需要覆盖getSupportParentActivityIntent(),它应该看起来像这样,
@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;
}
答案 1 :(得分:0)
在您的儿童活动中使用
@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;
}
之前你需要为每个源活动提供额外的价值 来自FavoriteActivity的说法
i.putExtra("from", "FAV");
并且使用MainActivity
i.putExtra("from", "MAIN");