4

如何知道android中哪个父活动调用了子活动?

假设我有三个活动 A、B 和 C。A 和 B 是父活动。C 是子活动。这意味着 C 可以由 A 或 B 启动。

那么我怎样才能知道哪个父活动导致启动子活动呢?

问题是我需要根据该父意图设置后退按钮。为此,我想覆盖getSupportParentActivityIntent()方法,并且它需要意图对象重新启动父活动。

这是android网站中的方法描述

如何让父活动正确覆盖 getSupportParentActivityIntent() 方法?

谢谢。

4

2 回答 2

2

我已经找到了如何正确实现 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;
}
于 2014-02-28T08:22:26.867 回答
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");
于 2015-05-25T14:28:11.533 回答