我是Android Studio的新手,目前正在开发我的第一个应用程序。我首先添加了Android Studio提供的BottomNavigationActivity。片段应该显示一个项目列表,可以通过按钮添加(这会打开一个新片段,在该片段中可以通过单击按钮创建新项目并将其添加到列表中)-
我有2个导航文件:
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mobile_navigation"
app:startDestination="@+id/navigation_kalender">
<fragment
android:id="@+id/navigation_habits"
android:name="com.example.bottomtest.ui.habits.HabitsFragment"
android:label="@string/title_habits"
tools:layout="@layout/fragment_habits" />
<fragment
android:id="@+id/navigation_kalender"
android:name="com.example.bottomtest.ui.kalender.KalenderFragment"
android:label="@string/title_kalender"
tools:layout="@layout/fragment_kalender" />
<fragment
android:id="@+id/navigation_notizen"
android:name="com.example.bottomtest.ui.notizen.NotizenFragment"
android:label="@string/title_notizen"
tools:layout="@layout/fragment_notizen" />
</navigation>
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/notizen_navigation"
app:startDestination="@id/notizenFragment">
<fragment
android:id="@+id/notizenBearbeitenFragment"
android:name="com.example.bottomtest.ui.notizen.NotizenBearbeitenFragment"
android:label="fragment_notizen_bearbeiten"
tools:layout="@layout/fragment_notizen_bearbeiten" >
<action
android:id="@+id/action_notizenBearbeitenFragment_to_notizenFragment"
app:destination="@id/notizenFragment" />
</fragment>
<fragment
android:id="@+id/notizenFragment"
android:name="com.example.bottomtest.ui.notizen.NotizenFragment"
android:label="fragment_notizen"
tools:layout="@layout/fragment_notizen" >
<action
android:id="@+id/action_notizenFragment_to_notizenBearbeitenFragment"
app:destination="@id/notizenBearbeitenFragment" />
</fragment>
</navigation>
这是我在创建时的主要活动:
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
BottomNavigationView navView = findViewById(R.id.nav_view);
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_habits, R.id.navigation_kalender, R.id.navigation_notizen)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(binding.navView, navController);
}
这是我在片段中创建的OnViewCreated:
binding.newNoteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
NotizenBearbeitenFragment notizenBearbeitenFragment = new NotizenBearbeitenFragment();
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.container, notizenBearbeitenFragment);
ft.addToBackStack(null);
ft.commit();
}
});
}
如果这是一个愚蠢的问题,我很抱歉,但我自己找不到解决方案,非常感谢任何帮助!
使用导航库时,不要自己触摸FragmentManager
让导航管理片段之间的导航,这就是它的用途。
消息:
I/FragmentNavigator:忽略navigate()调用:FragmentManager已保存其状态
在androidx中定义。航行碎片碎片导航器#导航碎片状态由活动保存。它通常在活动进入停止状态时出现。离开当前活动后,碎片管理器不应操作方法。(但仍然可以使用androidx.fragment.app.FragmentTransaction#commitAllowingStateLoss来忽略警告,但在重新创建活动时不会恢复此状态。)
在您的场景中,我建议跳到下一个活动来编辑、返回和刷新列表
我希望能够使用导航抽屉,并根据导航中的选择在不同片段之间进行更改。 我正在使用Android Studio,基本上我所做的是这样的: 使用内置模板“导航抽屉活动”创建了一个新项目 创建了一个空白片段 然后我更改了onNavigationDrawerItemSelected方法中的一些代码。 我的程序崩溃了,给了我很多我不理解的错误。我做错了什么?
我有一个带有底栏的main_activity。我正在使用这个底栏在片段之间导航。然而,有一个片段不能通过底部栏直接导航。它必须通过MapView和从片段中访问。然而,每当我使用InfoWindow时,该应用程序就会崩溃。这是我的代码 异常:main process:com.teslaqubitsins.fasih.teslahcm,pid:2573 java.lang.nullpointerexc
.替换(...,Frag2,...) -->frag2 -->frag1
每当我在eclipse上切换工作区时,我都会得到错误: 期间发生内部错误:“正在初始化 Java 工具”。重复的字段名称 如果我重启Eclipse,它就会正确地加载新的工作区。你知道我该怎么解决这个问题吗? 我在视窗 7 上使用日食开普勒
编辑:我的滑动标签碎片ATabs似乎有问题。没有使用ATabs片段,只需使用导航抽屉在片段A1和B之间切换,一切都很好!可以添加列表项。编辑的主要活动: 但当我使用ATabs片段(见下面的MainActivity)并切换到它并返回时,就不可能再添加ListItems了。尽管Logcat显示日志。v(LOG_标签,“添加项”) 每次按add()。 我不知道是什么导致了这个问题。如果ATabs需要是一
和logcat: