Android跳转Activity相关

模块内正常跳转

显式跳转

        Intent intent = new Intent();
        intent.setClass(this, xxxrActivity.class);
        intent.putExtra("key","value");
        startActivity(intent);

模块间跳转

隐式跳转

1:根据具体activity路径跳转

        Intent intent = new Intent();
        intent.setClassName(getPackageName(), "com.xxx_xxxActivity");
        intent.putExtra("key", "value");
        if (getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)!= null){
            startActivity(intent);
        }else {
            Toast.makeText(this,"找不到你想要的activity",Toast.LENGTH_SHORT).show();
        }

2:根据activity配置的action跳转

		//配置action
        <activity android:name="com.xxx.xxxActivity" >
            <intent-filter>
                <action android:name="xxx" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        Intent intent = new Intent();
        intent.setPackage(getPackageName());//配置包名,防止提醒进那个同样action的activity
        intent.setAction("x'x'x");//配置的action
        intent.putExtra("key", "value");
        if (getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)!= null){
            startActivity(intent);
        }else {
            Toast.makeText(this,"找不到你想要的activity",Toast.LENGTH_SHORT).show();
        }

隐式跳转安全性

注意:如果移除Activity所在module,而不移除跳转,Activity会出现崩溃现象。
所以,调用resolveActivity()做判空。

        if (getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)!= null){
            startActivity(intent);
        }else {
            Toast.makeText(this,"找不到你想要的activity",Toast.LENGTH_SHORT).show();
        }

ARouter路由跳转

发布了4 篇原创文章 · 获赞 6 · 访问量 235

猜你喜欢

转载自blog.csdn.net/yzp1121/article/details/103974091
今日推荐