如何实现getSupportParentActivityIntent()为android中的up-button动态设置活动

时间:2014-02-28 06:38:41

标签: android android-intent android-activity up-button

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

假设我有三个活动A,B和C. A和B是父活动。 C是儿童活动。这意味着C可以从A或B开始。

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

问题是我需要根据父intent设置后退按钮。为此我想覆盖 getSupportParentActivityIntent()方法,它需要intent对象再次启动父活动。 / p>

Here is the method description in android site

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

感谢。

2 个答案:

答案 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");