如何知道android中哪个父活动调用了子活动?
假设我有三个活动 A、B 和 C。A 和 B 是父活动。C 是子活动。这意味着 C 可以由 A 或 B 启动。
那么我怎样才能知道哪个父活动导致启动子活动呢?
问题是我需要根据该父意图设置后退按钮。为此,我想覆盖getSupportParentActivityIntent()方法,并且它需要意图对象重新启动父活动。
如何让父活动正确覆盖 getSupportParentActivityIntent() 方法?
谢谢。
如何知道android中哪个父活动调用了子活动?
假设我有三个活动 A、B 和 C。A 和 B 是父活动。C 是子活动。这意味着 C 可以由 A 或 B 启动。
那么我怎样才能知道哪个父活动导致启动子活动呢?
问题是我需要根据该父意图设置后退按钮。为此,我想覆盖getSupportParentActivityIntent()方法,并且它需要意图对象重新启动父活动。
如何让父活动正确覆盖 getSupportParentActivityIntent() 方法?
谢谢。
我已经找到了如何正确实现 getSupportParentActivityIntent() 并使用它我们可以动态地将活动设置为 android 中的向上按钮。这里我是如何实现它的。
假设我们有两个活动。活动 A 和 B。A 是父活动,B 是子活动。
所以 A 需要创建一个启动 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;
}
在你的孩子活动中使用喜欢
@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");