android actionbar设置返回不指定ParentName

在这个问题上弄了很长时间,其实很简单的

问题来源:

    在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);
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值