如何将菜单设置为工具栏

时间:2019-01-05 08:40:57

标签: android layout menu

link我有一个活动和片段,我想在运行前设置图标的mytoolbar菜单,但在运行应用程序中它什么都不显示。

在我的活动中:

公共类MainActivity扩展了AppCompatActivity {

private TabLayout mTabLayout;
private TextView mTextViewTabOne;
private TextView mTextViewTabTwo;
private TextView mTextViewTabThree;
private android.support.v7.widget.Toolbar mToolbar;
private TextView mTextViewToolbarTitle;
private AlertDialog mAlertDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setLocale("fa");


    getSupportFragmentManager().beginTransaction().replace(R.id.framelayout_mainactivity_fragmentcontainer, new AuthenticationPasswordFragment()).commit();
    setToolBar(getString(R.string.addbank_toolbartitle));

}

public void setToolBar(String title) {


    mToolbar = findViewById(R.id.toolbar_everywhere_toolbar);
    mTextViewToolbarTitle = findViewById(R.id.toolbar_title);

    mTextViewToolbarTitle.setText(title);

}

在我的片段中:

公共类AuthenticationPasswordFragment扩展BaseFragment实现BaseAuthenticationContract.View {

private TextInputEditText mEditTextPassword;
private TextInputLayout mTextInputEditTextPassword;
private View mRoot;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    mRoot=inflater.inflate(R.layout.fragment_authenticationpassword,null);

    return mRoot;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.authenticationpassword_menutoolbar,menu);
}

在我的菜单中是:

<item
    android:id="@+id/item_authenticationpassword_confirm"
    android:title="confirm"
    android:icon="@drawable/everywhere_confirm"
    app:showAsAction="always"
    />

3 个答案:

答案 0 :(得分:1)

在活动的onCreate方法中,将工具栏设置为

delete_all

然后添加此方法。

availabilitiesToDelete.each(&:delete)

然后添加菜单单击侦听器,

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

如果要在不同的片段中更改菜单项和侦听器,请使用界面让活动知道哪个片段处于活动状态并进行相应的更改。

答案 1 :(得分:1)

将此setToolbar替换为活动状态:

public void setToolBar(String title,int resourceMenu) {

        mToolbar = findViewById(R.id.toolbar_everywhere_toolbar);
        mTextViewToolbarTitle = findViewById(R.id.toolbar_title);
        mTextViewToolbarTitle.setText(title);
        mToolbar.inflateMenu(resourceMenu);

    }

与此:

public void setToolBar(String title) {

        mToolbar = findViewById(R.id.toolbar_everywhere_toolbar);
        mTextViewToolbarTitle = findViewById(R.id.toolbar_title);
        mTextViewToolbarTitle.setText(title);

    }

并将此行添加到onCreateView片段或要向其添加菜单工具栏的任何片段:

((MainActivity)getActivity()).setToolBar(getString(R.string.authenticationpassword_titletoolbar),R.menu.authenticationpassword_menutoolbar);

答案 2 :(得分:0)

如果要在片段中使用方法onCreateOptionsMenu,请在设置工具栏的活动的toolbar.setHasOptionsMenu(true)中添加代码行onCreate。 第二种选择是将onCreateOptionsMenu移到活动中。

请参阅this相关的StackOverflow问题。

如果此方法可行,请报告,希望对您有所帮助。