Android导航和活动(确定哪个活动是父级)

时间:2014-09-02 18:38:30

标签: android

我有三个活动:A,B,C 从活动A,B我都可以打电话

    startActivity(new Intent(this, C.class)); 

所以逻辑将类似于A-> B-> C或A-> C ..现在当我在C中时,我想回到B或A,这取决于哪个活动是C开始了。

现在问题是,当我在活动C中时,如何获得"返回"到父活动,我从中打开了这个活动C?

我一直尝试使用 NavUtils Intent.FLAGS ,但我没有成功。

顺便说一句:我无法使用finish()onBackPressed()。我在我的应用程序中使用自定义动态创建主题,当我使用onBackPressed()时,它将在加载所需活动之前显示默认应用程序主题(带图标的默认白屏)。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

你的清单中的

将此添加到活动C中,因此这部分解决了后退按钮。

 <activity
            android:name="your.package.name.C"
            android:launchMode="singleInstance" >
 </activity>

让我们解决按钮:

您必须使用putExtra来表示C activity的父级。例如,当你想从活动B调用它时:

Intent i = new Intent(B.this,C.class);          
                i.putExtra(MY_PARENT,"B");  
                startActivity(i);

并在名为activity C的字符串中MY_PARENT存储parent值。然后当用户按UP button读取并转到父母时。 这意味着在活动C:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        Intent i = new Intent(C.this,Class.forName(parent));                
        startActivity(i);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

答案 1 :(得分:0)

您可以在onCreate的{​​{1}}方法中创建和处理太多对象,这样会导致您在加载所需活动之前看到的延迟...

您可以在Activity中执行所有这些创建和处理,并保持AsyncTask方法清洁,然后您就不会再看到这种延迟了。