Iniciar fragmento em BottomNavigationView
Estou trabalhando com um aplicativo simples com a exibição de navegação inferior. Tenho 3 fragmentos com texto e quero iniciá-los quando seleciono um item no Botton Navigation, mas não sei o que escrever no MainActivity.java; Todos os fragmentos têm um layout .xml e .java. Procurei em alguns códigos, escrevi-os, pesquiso vídeos, mas não tenho sucesso.
Estou aprendendo sobre fragmentos e interface dinâmica de interface do usuário, por isso criei um novo projeto no Android Studio com atividade de navegação inferior. Então, na minha activity_main, tenho 3 itens na navegação inferior e um layout acima da navegação inferior, levando todo o pai. A idéia é: quando eu seleciono um item na navegação inferior, ele mostra outro layout no layout do quadro. Então eu criei 3 layouts de XML (com classe java também) na pasta de layout e um fragmento no framelayout. Agora, estou tentando mostrar esses layouts no layout da minha moldura (que possuem um fragmento) quando seleciono um item. Mas eu não sei como fazer isso.
Atividade principal`
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();
}
activity_main 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 de navegação
<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"/>
Exemplo de 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);
}