Performclick不适用于android片段

问题描述

我对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);