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);
}
问题来源:
在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);
}
相关文章推荐
- Xml解析之——Java/Android/Python
- ADB(Android Debug Bridge) 的使用
- Android setImageResource、setImageBitmap、setImageDrawable区别
- TextView实现歌词同步
- Android 源码解析: 图片加载库Picasso 2 Cache机制
- android平台TextView使用ImageSpan画廊GIF图像
- SQLITE 在 ANDROID 中的详细使用
- 解决Android平台中应用程序OOM异常的方法
- Android ormlite升级数据库方案-KJFrameForAndroid升级Sqllite数据库
- Android圆形图/头像
- android中使用回调接口实现底部菜单的切换
- Android中定时执行任务的3种实现方法
- android 布局属性大全
- 自定义ProgressDialog
- 【Android】javadoc, Android注释中添加链接
- Android的SQLite
- 记录Android开发的点点滴滴
- Android --调启百度地图
- MPAndroidChart 教程:开始 Getting Started(一)
- Android中悬浮窗口