Как установить меню на панель инструментов - PullRequest
0 голосов
/ 05 января 2019

enter image description here У меня есть активность и фрагмент, я хочу установить меню на 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 голосов
/ 05 января 2019

Если вы хотите, чтобы метод onCreateOptionsMenu находился внутри фрагмента, добавьте кодовую строку toolbar.setHasOptionsMenu(true) в onCreate действия, в котором настроена панель инструментов. Второй вариант - переместить onCreateOptionsMenu в действие.

См. этот связанный вопрос StackOverflow.

Сообщите, если это сработает, надеюсь, вам это поможет.

0 голосов
/ 05 января 2019

Замените этот 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);
0 голосов
/ 05 января 2019

В методе onCreate действия установите панель инструментов с

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

Затем добавьте этот метод.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.yourmenufile, menu);
  return super.onCreateOptionsMenu(menu);
}

Затем добавьте прослушиватель щелчка меню,

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case 0:
            // do whatever
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

Если вы хотите изменить пункты меню и прослушиватели, находясь в разных фрагментах, используйте интерфейсы, чтобы действие узнало, какой фрагмент активен, и соответственно измените.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...