Ton*_*kus 1 android android-fragments bottomnavigationview
我正在使用带有底部导航视图的简单应用程序。我有3个片段(布局和Java)。我有在我的MainActivity.java中声明的BottonNavigationView。我的bottonnavigation有3个项目,分别是3个片段。因此,在我的MainActivity.java中,当我选择一个项目时,它将开始一个片段。因此,当我再次选择另一个项目时,什么也没有发生,因为在Java片段中我需要声明BottonNavigationView,但是我不知道如何设置它以将实际片段与另一个片段切换。我尝试了此链接,但没有成功:https : //developer.android.com/training/basics/fragments/fragment-ui.html
对不起,我的英语不好
这里的代码:
主要活动
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.navigation_home:
selectedFragment = HomeFragment.newInstance();
break;
case R.id.navigation_dashboard:
selectedFragment = DashboardFragment.newInstance();
break;
case R.id.navigation_notifications:
selectedFragment = NotificationsFragment.newInstance();
break;
}
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.content, selectedFragment);
transaction.commit();
return true;
}
Run Code Online (Sandbox Code Playgroud)
片段Java示例
public class HomeFragment extends Fragment {
public static HomeFragment newInstance() {
HomeFragment fragment = new HomeFragment();
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.navigation_home, container, false);
return inflater.inflate(R.layout.navigation_home, container, false);
}
Run Code Online (Sandbox Code Playgroud)
小智 6
你可以试试:
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.navigation_home:
selectedFragment = HomeFragment.newInstance();
break;
case R.id.navigation_dashboard:
selectedFragment = DashboardFragment.newInstance();
break;
case R.id.navigation_notifications:
selectedFragment = NotificationsFragment.newInstance();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.content, selectedFragment).commit();
return true;
}
Run Code Online (Sandbox Code Playgroud)
您不必每次都创建 newInstance。您可以保存片段状态。按照下面的链接
fragmentManager.beginTransaction().hide(toBeHidden).show(toBeShown).commit();
Run Code Online (Sandbox Code Playgroud)
https://medium.com/@oluwabukunmi.aluko/bottom-navigation-view-with-fragments-a074bfd08711
| 归档时间: |
|
| 查看次数: |
9101 次 |
| 最近记录: |