我如何使用通过菜单项选择的选项项附加片段

问题描述 投票:0回答:1

您好,菜单布局包含菜单项。该菜单项具有一个带有动作视图类的项目,该类应该在单击时附加一个片段。使用菜单项的操作视图类单击action_account菜单项时,如何获得AccountManagementFragment的附件]

我的菜单项布局


<item android:id="@+id/action_account"
        android:title="Account"
        android:icon="@drawable/ic_profile"
        app:showAsAction="collapseActionView|ifRoom"
        app:actionViewClass="ke.co.clinton.hama.viewslogic.account.AccountManagementFragment"/>

我的onCreateOptionsMenu和onOptionsItemsSelected方法


@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {

        if (item.getItemId() == R.id.search) {

        }

        return super.onOptionsItemSelected(item);

    }

我的片段类


import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProviders;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import ke.co.clinton.hama.MainActivity;
import ke.co.clinton.hama.R;
import ke.co.clinton.hama.interfaces.DrawerLocker;

public class AccountManagementFragment extends Fragment {

    private AccountManagementViewModel mViewModel;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        ((MainActivity)getActivity()).getSupportActionBar().hide();
        ((DrawerLocker) getActivity()).setDrawerEnabled(false);
        View view = inflater.inflate(R.layout.fragment_account_management, container, false);
        Toolbar toolbar = view.findViewById(R.id.toolbar);
        toolbar.setTitle("Title");
        toolbar.setNavigationIcon(R.drawable.ic_back_button);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getActivity().onBackPressed();
            }
        });
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mViewModel = ViewModelProviders.of(this).get(AccountManagementViewModel.class);
        // TODO: Use the ViewModel

    }


    @Override
    public void onResume() {
        super.onResume();
        ((MainActivity)getActivity()).getSupportActionBar().hide();
        ((DrawerLocker) getActivity()).setDrawerEnabled(true);
    }
    @Override
    public void onStop() {
        super.onStop();
        ((MainActivity)getActivity()).getSupportActionBar().show();
        ((DrawerLocker) getActivity()).setDrawerEnabled(true);
    }

}

您好,菜单布局包含菜单项。该菜单项具有一个带有动作视图类的项目,该类应该在单击时附加一个片段。我如何附上...

android android-fragments menuitem
1个回答
0
投票

您不能在菜单项中将Fragment作为app:actionViewClass传递。您真正能做的是在onOptionItemSelected中选择菜单项时附加片段。

  1. 从菜单项中删除app:actionViewClass

© www.soinside.com 2019 - 2024. All rights reserved.