flag_activity_clear_top(android开发中跳转到另一个activity时发生空指针错误)
本文目录
- android开发中跳转到另一个activity时发生空指针错误
- android 怎么用Intent.setFlag 清除以前的activity
- 有没有清空activity堆栈底所有activity的方法
- Activity的启动模式是怎样的
android开发中跳转到另一个activity时发生空指针错误
把你的错误日志给贴出来 再把你的122行的代码贴出来看看
你把代码改成这样
switch (paramView.getId()) {
case R.id.imgHome:
intent.setClass(this, HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Log.e(“TAB2“, “Home“);
break;
case R.id.gerenzhongxin:
intent.setClass(this, UserCenterActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Log.e(“TAB1“, “gerenzhongxin“);
break;
}
startActivity(intent);
android 怎么用Intent.setFlag 清除以前的activity
你是说FLAG_ACTIVITY_CLEAR_TOP吧
假设你按照顺序打开了A、B、C、D四个Activity,然后想跳转到A,并清除B、C、D,那么可以这么写
Intent intent = new Intent(D.this,A.class);
intent.setFlag(FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
用这种方式跳转到A,在A之后打开的Activity就都会从堆栈中清除了。
具体说明可以参考Intent中对于Flag属性的解释
有没有清空activity堆栈底所有activity的方法
有没有什么方法可以把要启动的activity在activity堆栈中下面所有的activity清空?
采取一个比较笨的方法是先启动activity堆栈最下面的activity并且带上参数intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);。然后再启动想要的activity,并且finish掉当前最底端的activity。
似乎这个方法最简单了吧如果所有的activity都是你自己的,你可以自己维护一个activity stack,那就好处理多了
Activity的启动模式是怎样的
作为一个前 Android 程序员,我来回答一下这个问题吧,希望能够帮助到题主。
Activity 有四种加载模式:standard (默认), singleTop, singleTask 和 singleInstance。以下逐一举例说明他们的区别:
standard:Activity 的默认加载方法,即使某个 Activity 在 Task 栈中已经存在,另一个 activity 通过 Intent 跳转到该 activity,同样会新创建一个实例压入栈中。例如:现在栈的情况为:A B C D,在 D 这个 Activity 中通过 Intent 跳转到 D,那么现在的栈情况为: A B C D D 。此时如果栈顶的 D 通过 Intent 跳转到 B,则栈情况为:A B C D D B。此时如果依次按返回键,D D C B A 将会依次弹出栈而显示在界面上。
singleTop:如果某个 Activity 的 Launch mode 设置成 singleTop,那么当该 Activity 位于栈顶的时候,再通过 Intent 跳转到本身这个 Activity,则将不会创建一个新的实例压入栈中。例如:现在栈的情况为:A B C D。D 的 Launch mode 设置成 singleTop,那么在 D 中启动 Intent 跳转到 D,那么将不会新创建一个 D 的实例压入栈中,此时栈的情况依然为:A B C D。但是如果此时 B 的模式也是 singleTop,D 跳转到 B,那么则会新建一个 B 的实例压入栈中,因为此时 B 不是位于栈顶,此时栈的情况就变成了:A B C D B。
singleTask:如果某个 Activity 是 singleTask 模式,那么 Task 栈中将会只有一个该 Activity 的实例。例如:现在栈的情况为:A B C D。B 的 Launch mode 为 singleTask,此时 D 通过 Intent 跳转到 B,则栈的情况变成了:A B。而 C 和 D 被弹出销毁了,也就是说位于 B 之上的实例都被销毁了。
singleInstance:将 Activity 压入一个新建的任务栈中。例如:Task 栈 1 的情况为:A B C。C 通过 Intent 跳转到 D,而 D 的 Launch mode 为 singleInstance,则将会新建一个 Task 栈 2。此时 Task 栈 1 的情况还是为:A B C。Task 栈 2 的情况为:D。此时屏幕界面显示 D 的内容,如果这时 D 又通过 Intent 跳转到 D,则 Task 栈 2 中也不会新建一个 D 的实例,所以两个栈的情况也不会变化。而如果 D 跳转到 C,则栈 1 的情况变成了:A B C C,因为 C 的 Launch mode 为 standard,此时如果再按返回键,则栈 1 变成:A B C。也就是说现在界面还显示 C 的内容,不是 D。
看完我的解答,不知道大家是否明白了,应该算是说的很清楚和详细了。
更多文章:
winrar4 01破解版(winrar4.0132位破解方法)
2024年6月6日 14:02
专门破qq密码的软件免费(qq密码破解大师免费版v2.1.21安卓最好用吗)
2024年8月6日 22:45
前线突击队数据包(疫情到什么阶段了,前线突击队队员们,身体状况,精神状况如何)
2024年5月15日 12:35
qq聊天记录删除了怎么恢复(qq聊天记录删除了怎么恢复,恢复删除qq聊天记录)
2024年7月23日 06:13
qq浏览器兼容模式怎么设置(QQ浏览器Mac版怎么设置兼容模式)
2024年4月22日 12:10
古代大户人家一般都有管家,管家是做什么的又是怎么产生的?历史上一个家族的管家是做什么的
2024年7月22日 02:24
常德市协同办公平台手机显示登录失败?山东通协同办公平台是干什么用的
2023年7月20日 11:40
office 2003 迷你版(Office2003迷你版和Encart2007的问题)
2024年5月23日 00:15
站长统计草莓芭乐丝瓜小猪(丝瓜草莓香蕉向日葵芭乐香草共同的特点是什么健康百)
2024年7月13日 00:30
英汉互译在线翻译拍照(用什么软件可以拍照后将英语课文翻译成中文)
2024年8月18日 05:16