我有,
我有
一旦點擊片段1中的Btn,我們將被引導到片段2。
點擊frag2中的Btn,我們將被引導到frag1.
。當從frag(1->2或2->1)引導時,底部導航視圖上的圖示保持不變
。是否有辦法在加載的片段中突出該圖示?
片段1中的btn的點擊監聽器
this.getActivity().getSupportFragmentManager()。 beginTransaction().replace(R.id.body_container, new Fragment2()).commit()。
片段2中的btn的點擊監聽器
this.getActivity().getSupportFragmentManager()。 beginTransaction().replace(R.id.body_container, new Fragment1()).commit()。
MainActivity代碼中底部導航的OnItemSelectedListener
((BottomNavigationView)findViewById(R.id.bottom_nav)).setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener(){
Fragment clickedFragment = null。
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId() ) {
case R.id.one: clickedFragment = new Fragment1(); break;
case R.id.two: clickedFragment = new Fragment2(); break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.body_container, clickedFragment).commit()。
return true。
}
});
uj5u.com熱心網友回復:
在與主活動相同的包中創建一個temp類,并在其中添加以下欄位。
public static BottomNavigationView bottomNavigationView;
只要看一下代碼,我在評論中解釋過。
主要活動代碼
protected void onCreate(Bundle savedInstanceState) { super.onCreate(s savedInstanceState)。 setContentView(R.layout.activity_main)。 BottomNavigationView bottomNavView = temp.bottomNavigationView = findViewById(R.id.bottom_nav)。 //這一行,最初當應用程式被打開時,默認顯示片段1。 getSupportFragmentManager().beginTransaction().replace(R.id.body_container, new Fragment1() ).commit()。 bottomNavView.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener(){ 。 public boolean onNavigationItemSelected( MenuItem item){ Fragment clickedFragment = null; switch (item.getItemId() ) { case R.id.one: clickedFragment = new Fragment1(); break; case R.id.two: clickedFragment = new Fragment2(); break; } //當用戶點擊底部導航視圖的圖示時,這一行將替換該片段。 getSupportFragmentManager().beginTransaction().replace(R.id.body_container, clickedFragment).commit()。 return true。 } }); }
3.OnViewCreated in Fragment1
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState)。
view.findViewById(R.id.btn_to_frag2).setOnClickListener(l-> {
temp.bottomNavigationView.setSelectedItemId(R.id.2)。
});
}
4.OnViewCreated in Fragment2
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState)。
view.findViewById(R.id.btn_to_frag1).setOnClickListener(l-> {
temp.bottomNavigationView.setSelectedItemId(R.id.one)。
});
}
uj5u.com熱心網友回復:
setOnItemSelectedListener只有在BottomNavigationView的選定專案發生變化時才會被觸發。你目前所做的是改變當前顯示的片段。你應該設定BottomNavigationView的選擇項,而不是改變片段。像這樣的作業應該是可以的
((BottomNavigationView) findViewById(R.id.bottom_nav)).setSelectedItemId(R.id.your_menu_item_id) 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/318392.html
標籤:
