Я пытаюсь использовать BottomNavigationView для перемещения между 3 фрагментами, и я заставил его работать, но у меня небольшая проблема.
У меня есть 2 фрагмента и 1 действие, и в этом действии код перемещается между фрагментамив нем.
Когда я нажимаю кнопки на нижней панели навигации, я вижу изменения изображения нижней панели.
И в одном фрагменте я сделал кнопку, которая переместится на другой фрагмент, когданажата, и она работает хорошо.
Проблема, с которой я сталкиваюсь, заключается в том, что при нажатии кнопки для перехода к другому фрагменту изображение нижней полосы не изменяется.
Вот мой коддля основной деятельности:
public class MainActivity extends AppCompatActivity {
public static Bundle bundle = new Bundle();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView bottomNav = findViewById(R.id.bottom_navigation);
bottomNav.setOnNavigationItemSelectedListener(navListener);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFragment()).commit();
}
private BottomNavigationView.OnNavigationItemSelectedListener navListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.nav_home:
selectedFragment = new HomeFragment();
break;
case R.id.nav_announcement:
selectedFragment = new AnnouncementFragment();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
selectedFragment).commit();
return true;
}
};
}
А это код фрагмента с кнопкой:
public class HomeFragment extends Fragment {
Calendar calendar = Calendar.getInstance();
Button buttonTrack;
int year, month, day;
public HomeFragment() {
//Required empty public constructor
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
this.year = calendar.get(Calendar.YEAR);
this.month = calendar.get(Calendar.MONTH) + 1;
this.day = calendar.get(Calendar.DAY_OF_MONTH);
buttonTrack = view.findViewById(R.id.btn_track);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.getDefault());
final String currentTime = simpleDateFormat.format(new Date());
buttonTrack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MainActivity.bundle.putString("time", currentTime);
getFragmentManager().beginTransaction().replace(R.id.fragment_container, new AnnouncementFragment()).commit();
}
});
return view;
}
}
И другой фрагмент:
public class AnnouncementFragment extends Fragment {
String timeFromBundle;
TextView announcementHere, timeView;
public AnnouncementFragment() {
// Required empty public constructor
}
@SuppressLint("NewApi")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_announcement, container, false);
timeFromBundle = MainActivity.bundle.getString("time");
announcementHere = view.findViewById(R.id.announcement_here);
timeView = view.findViewById(R.id.time_view);
timeView.setText(timeFromBundle);
return view;
}
}
Может кто-нибудь сказать мне, когда я должен исправить, чтобы это изменило изображение в нижней панели, даже когда я перемещаюсь к другому фрагменту, нажимая кнопку внутри фрагмента?Заранее спасибо!