你好,我知道这是一个重复的问题,但我无法从其他线程找到解决方案。
这是我的问题,我有一个应用程序与底部导航栏与五个片段。我想打开这些片段通过应用程序的快捷方式。
这是我创造的
shortcut.xml
<shortcuts xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<shortcut
android:shortcutId="first"
android:enabled="true"
android:icon="@drawable/shortcut_1"
android:shortcutShortLabel="@string/shortcut_short_label_one"
android:shortcutLongLabel="@string/shortcut_long_label_one"
tools:targetApi="n_mr1">
<intent
android:action="com.xxxxxxx.xxxx.FIRST"
android:targetPackage="com.xxxxxxx.xxxx.test"
android:targetClass="com.xxxxxxx.xxxx.test.MainActivity" />
</shortcut>
<!-- Specify more shortcuts here. -->
<shortcut
android:shortcutId="second"
android:enabled="true"
android:icon="@drawable/shortcut_2"
android:shortcutShortLabel="@string/shortcut_short_label_two"
android:shortcutLongLabel="@string/shortcut_long_label_two"
tools:targetApi="n_mr1">
<intent
android:action="com.xxxxxxx.SECOND"
android:targetPackage="com.xxxxxxx.xxxx.test"
android:targetClass="com.xxxxxxx.xxxx.test.SecondFragment" />
</shortcut>
</shortcut>
下面是来自主活动的onCreate(
private static final String Second = "com.xxxxxxx.xxxx.SECOND";
//code vomited
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Second.equals(getIntent().getAction())){
SecondFragment secondFragment = new SecondFragment();
android.support.v4.app.FragmentTransaction fragmentTransactionTwo = getSupportFragmentManager().beginTransaction();
fragmentTransactionTwo.replace(R.id.content_main, secondFragment, "Fragment two");
fragmentTransactionTwo.commit();
}
BottomNavigationView navigation = findViewById(R.id.navigation);
BottomNavigationViewHelper.disableShiftMode(navigation); //disabling the shitty shifting mode
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
FirstFragment firstFragment = new FirstFragment();
android.support.v4.app.FragmentTransaction fragmentTransactionOne = getSupportFragmentManager().beginTransaction();
fragmentTransactionOne.replace(R.id.content_main, firstFragment, "Fragment one");
fragmentTransactionOne.commit();
}
在这里,第一个活动启动良好,即MainActivity()
。但点击第二个快捷方式没有发生任何事情。
有人能解释一下我做错了什么吗?
3条答案
按热度按时间wf82jlnq1#
我看到了一些不对劲的地方:
在快捷方式.xml上:
这两个快捷方式都应该以“MainActivity”类为目标,因为这是入口点,负责将片段添加到ui。因此,您需要更改第二个快捷方式上的targetClass,并改为以“MainActivity”为目标。
在onCreate方法上:
当操作对应于第二个快捷方式时,它在屏幕上设置第二个片段,但方法继续并在其上设置第一个片段。
我想应该是一个“如果-否则”:
vyswwuz22#
我有和你一样的问题,我找到了如何移动到碎片。你应该点击动作。把这个放在创建中,也许这会帮助你
即时通讯使用Kotlin的android
gudnpqoy3#
过了一段时间,我找到了如何通过快捷方式Kotlin打开片段的答案:
快捷方式.xml
主要活动
安卓清单.xml