在这个问题上弄了很长时间,其实很简单的
问题来源:
在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);
}