我正在处理一个带有底部导航视图的简单应用程序。 我有3个文本片段,并且我想在选择底部导航项目时启动它们,但我不知道在MainActivity.java中要写什么代码。
所有片段都有.xml布局和.java文件。 我搜索了一些代码,尝试写它们,甚至查找视频,但是我没有成功。
我正在学习片段和UI动态方面的内容,因此我在Android Studio中创建了一个新项目,以Bottom Navigation Activity为模板。所以,在我的activity_main中,我有3个底部导航项,并且在底部导航上面有一个占据整个父级的FrameLayout。 我的想法是:当我选择底部导航项时,它将在FrameLayout中显示另一个布局。 所以,我在layout文件夹中创建了3个xml布局(并且还有java类)以及一个fragment在FrameLayout中。现在,我正试图在我选择项目时在我的FrameLayout(其中包含一个fragment)中显示这些布局。 但我不知道怎么做。
以下是主要代码:
导航XML
所有片段都有.xml布局和.java文件。 我搜索了一些代码,尝试写它们,甚至查找视频,但是我没有成功。
我正在学习片段和UI动态方面的内容,因此我在Android Studio中创建了一个新项目,以Bottom Navigation Activity为模板。所以,在我的activity_main中,我有3个底部导航项,并且在底部导航上面有一个占据整个父级的FrameLayout。 我的想法是:当我选择底部导航项时,它将在FrameLayout中显示另一个布局。 所以,我在layout文件夹中创建了3个xml布局(并且还有java类)以及一个fragment在FrameLayout中。现在,我正试图在我选择项目时在我的FrameLayout(其中包含一个fragment)中显示这些布局。 但我不知道怎么做。
以下是主要代码:
private TextView mTextMessage;
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@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;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.content, HomeFragment.newInstance());
transaction.commit();
}
主活动 XML
<LinearLayout
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/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="bandeira.thalisson.barradenavegacaoembaixo.MainActivity">
<FrameLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</FrameLayout>
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="?android:attr/windowBackground"
app:menu="@menu/navigation"/>
导航XML
<item
android:id="@+id/Fragment_one"
android:icon="@drawable/ic_home_black_24dp"
android:title="@string/title_home"/>
<item
android:id="@+id/Fragment_two"
android:icon="@drawable/ic_dashboard_black_24dp"
android:title="@string/title_dashboard"/>
<item
android:id="@+id/Fragment_three"
android:icon="@drawable/ic_notifications_black_24dp"
android:title="@string/title_notifications"/>
Fragment.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);
}