Intent跳转,想毕每个android人都经常使用,
相对于隐式跳转,其实我们用的更多的是显示跳转(其实一般我们跳转android内置应用全是隐式跳转):
Intent intent=new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
而对于隐式跳转,大家也是能随意的说出,不就是配置一个意图过滤器吗, 有什么难的0.0
确实并不难,这个小小的细节,估摸很多人都遇到过,然后由于并不是常用,所以可能就忘记了
在此保存下来,以防哥哥姐姐们因为项目压力而慌不择路,无从下手 xixi
//清单文件如此配置?
<activity android:name=".xxxxActivity">
<intent-filter>
<action android:name=".xxxxActivity" />
<category android:name="cxxxtion.ABC" />
</intent-filter>
</activity>
//隐式跳转代码如下:
Intent intent = new Intent(".SecondActivity");
intent.addCategory("com.zz.myapplication.ABC");
startActivity(intent);
//别着急复制,是有问题的.......
然后神奇的结果 程序崩溃, 报错信息如下:
也许就算项目压力,出于经验,大家还是快速的从错误中发现,
报错说 No Activity found to handle Intent { act=.SecondActivity cat=[com.zz.myapplication.ABC] }
赶快比对一下 咱的 action 和 category 是不是写错了 …
然后多次比对后, 发现 action 和 category 并没用写错
内心飙戏:
what , android 你特么个坑B 怎么回事 这特么都匹配不到, 是不是神奇的缓存问题, 于是卸载应用 重启studio 可是问题依然…
莫慌,莫慌, 这就是我写下blog的原因,由于赶项目,心里都是焦躁不安的,遇到简单问题,还无法快速解决的心理,简直就要炸了天!!!
以下是正确写法:
//清单文件配置
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name=".SecondActivity" />
<category android:name="android.intent.category.DEFAULT" /> //没错就是我 zzz
<category android:name="com.zz.myapplication.ABC" />
</intent-filter>
</activity>
//跳转代码
Intent intent = new Intent(".SecondActivity");
//即使没有addCategory ->default 也必须在清单文件中配置
//
intent.addCategory("com.zz.myapplication.ABC");
startActivity(intent);