问题描述
我对android studio有问题。我将片段与 bottomNavigationView 一起使用。如果您点击 bottomNavigation ,效果会很好。但是,如果您模拟一次 bottomNavigation 的点击,则它第一次起作用,而第二次如果再次模拟 performclick ,则它不起作用。
我还使用了view.callOnClick();
并为该片段添加和删除了片段,但是两者都无法解决我的问题。如果有人能解决我的问题,我真的很感激。
这是代码:
`
public class ProfileFragment extends Fragment {
private Button send_order_button;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstaceState) {
return inflater.inflate(R.layout.profile_fragment,container,false);
}
@Override
public void onStart() {
send_order_button = (Button) getView().findViewById(R.id.auftrag_abschicken);
}
send_order_button.setonClickListener(new View.OnClickListener() {
ProfilActivity pa = new ProfilActivity();
pa.changeFragment();
getActivity().finishActivity(ProfilActivity.class.hashCode());
}
}`
`
public class ProfilActivity extends AppCompatActivity {
public ProfilActivity() {}
public static Fragment selectedFragment = null;
public static BottomNavigationView bottomNavigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profil);
bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation);
bottomNavigationView.setonNavigationItemSelectedListener(navListener);
View view = bottomNavigationView.findViewById(R.id.nav_chat);
view.performClick();
}
public void changeFragment() {
// bottomNavigationView.setSelectedItemId(R.id.nav_store);
View view = bottomNavigationView.findViewById(R.id.nav_store);
view.performClick();
}
public BottomNavigationView.OnNavigationItemSelectedListener navListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.nav_user :
selectedFragment = new ProfileFragment();
break;
case R.id.nav_chat :
selectedFragment = new MailFragment();
break;
case R.id.nav_store:
selectedFragment = new ShopFragment();
break;
}
try {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,selectedFragment,"fragment").commitAllowingStateLoss();
} catch (Exception e) {
e.printstacktrace();
};
return true;
}
};
}`
解决方法
您似乎正在尝试在BottomNavigationView
中设置默认的选定项目。为什么不只使用bottomNavigationView.setSelectedItemId(R.id.nav_store);
?