如何确定哪个Activity将在android中的下一个之后启动

时间:2015-03-03 07:33:08

标签: android

您好,我想调用一个Activity决定哪个是在Dialog结束后开始的下一个活动:

    Intent dialog_intent = new Intent(_parent, MyActivityA.class);
    dialog_intent.putExtra(MyActivityA.EXTRA_PARENT, MyActivityB.class);

我在MyActivityA的Oncreate中得到了额外的东西:

    Type _parent = null; // this is a class variable 
    Intent intent = getIntent();
    Bundle bundle = intent.getExtras();
    if (bundle != null) {
        Set<String> keys = bundle.keySet();
        Iterator<String> it = keys.iterator();
        while (it.hasNext()) 
        {
            String key = it.next();

            if(key.equals(EXTRA_PARENT))
                _parent = (Type)bundle.get(EXTRA_PARENT);
        }
    }
在finishDialog方法中

我这样做:

public void finishDialog(View v) 
{ 
    try 
    {
        Intent intent = null; 
        if(_parent != null && _parent instanceof Activity)
        {
            intent = new Intent(this, _parent.getClass());
        }
        else
        {
            intent = new Intent(this, DefaultActivity.class);
        }
        if(intent != null)
        {
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivity(intent);
        }
    } 
    catch (Exception e) 
    {
        e.printStackTrace();
    }
    finally
    {
        finish();
    }

2个问题:

为什么_parent instaneof Activity不起作用。我认为MyActivity是继承Activity的Type 尝试启动活动不起作用。但如果我投入

 new Intent(this,MyActivityB.class);

它有效!我究竟做错了什么。有没有其他方法可以做到这一点

1 个答案:

答案 0 :(得分:0)

您可以简单地传递整数值并将其映射到相应的活动。

Intent dialog_intent = new Intent(_parent, MyActivityA.class);
dialog_intent.putExtra("EXTRA_PARENT", 1);

现在在您的活动中获取此EXTRA_PARENT并调用活动

Bundle extras = getIntent().getExtras();
int extraParent = extras.getInt("EXTRA_PARENT");
if(extraParent == 1)
{
    Intent dialog_intent = new Intent(_parent, MyActivityB.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    startActivity(intent);
}