您的位置:首页 > 移动开发 > Android开发

android actionbar设置返回不指定ParentName

2015-12-14 16:38 429 查看
在这个问题上弄了很长时间,其实很简单的

问题来源:

    在theme中指定了actionbar,众所周知点击actionbar的home键(返回)可以返回到指定ParentName的activity,只需要在AndroidManifest指定android:parentActivityName="xxx"就行,但是这样会产生一个问题,如果从不同的activity进入相同的activity,也就是从A进入C,从B进入C,但是返回只能返回一个到一个指定的Parent,如何点击actionBar的返回时产生点击Back按键
的效果呢

解决过程:

   1,在Intent中putExtra,然后重写onOptionsItemSelected

非常容易理解,但是如果以后类比较多,每个类都需要增加这个消息,非常麻烦
    2,模拟点击返回事件,网上有代码,但是需要新开线程,不容易维护,不好

    3,(没能解决)查询任务栈中的parentName,查找了很多资料,基本没人这么做,然后找到的RunningTaskInfo只有TopActivity和BaseActivity,没有找到中间内容,而且就算找到了也不一定是我们需要的parentname。

    4,非常非常简单,从一开始就进入了一个误区,当我们在AndroidManifest中加入ParentName就会对任务栈产生影响,导致回退到指定的activity,从而误导我们取用Intent方式,进而诱导我们去获取非指定的ParentName。但是只要我们不在AndroidManifest添加parentActivityName属性,就不会改变任务栈,就能会退到正常的activity中,所以可以直接调用onBackPressed,代码如下:

<activity
android:name=".activity.test.A"
android:label="A"
android:screenOrientation="portrait" >

</activity>

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: