我正在尝试使用BottomNavigationView在3个片段之间进行移动,并且我成功了,但我有一个小问题。
我有2个片段和1个活动,此活动中包含了在片段之间移动的代码。
当我按下底部导航栏上的按钮时,我可以看到底部栏图像发生变化。
而在一个片段中,我制作了一个按钮,按下后将会移动到另一个片段,并且它运行良好。
我面临的问题是,当我按下按钮以移动到另一个片段时,底部栏图像并没有更改。
以下是我的主要活动代码:
我有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;
}
}
有人能告诉我应该如何修复,使得即使我通过在片段内按下按钮移动到其他片段,底部栏中的图像也会更改吗?谢谢!