【发布时间】:2018-10-01 09:29:01
【问题描述】:
我正在尝试使用 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;
}
}
任何人都可以告诉我什么时候应该修复以使其更改底部栏中的图像,即使我通过按下片段内的按钮移动到另一个片段?提前致谢!
【问题讨论】:
-
在你的bottomNavigationView中使用viewpager
标签: android android-layout android-fragments bottomnavigationview