12

スタック オーバーフローに関する質問を調べましたが、解決策が見つかりません。

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.themenu, menu);
    MenuItem   item = menu.findItem(R.id.menu_settings);
    MenuItem item2 = menu.findItem(R.id.menu_save);
    item.setVisible(isdown);
    item2.setVisible(isdown);
    return true;
}

これにより、メニュー項目が表示されます (item1 と item2)。onclickは正常に動作します

public void inflateTextarea() {
    if(isdown == true) {
        isdown = false;
        LinearLayout tl = (LinearLayout)findViewById(R.id.content);
        tl.setVisibility(View.VISIBLE);
        ScaleAnimation scale =  new ScaleAnimation(1, 1, 0, 1);
        scale.setFillAfter(true);
        scale.setDuration(500);
        tl.startAnimation(scale);
    }
}

次に、これにより isdown ブール値が false に設定されます。スタックの人々は、クリックするたびにonPrepareOptionsMenuが起動するはずだと言いますが、そうではありません。onclick 関数で 1 つのメニュー項目を非表示にできます

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
        case R.id.menu_settings: 
            Log.v("Log:","edit_item pressed");
            return true;
    }
}

しかし、非表示にする必要があるメニュー項目と表示したいメニュー項目が複数あります。これについてどうすればいいですか?

4

4 に答える 4

0

2 つの項目を含むメニューがあります。1 つ目: 項目の保存、2 つ目: 項目の編集。編集しようと思ったら、最初は「アイテムの保存」が非表示になっていて、「アイテムの編集」をクリックすると「アイテムの保存」が表示されました。

そう:

  1. 公の場でアイテムを宣言する
  2. 値を設定しますonCreateOptionsMenu(Menu menu, MenuInflater inflater)
  3. 可視性を設定するisHidden()
  4. 次に、必要なすべての場所で、可視性をisVisible()

パブリック リージョン:

MenuItem saveItem;

onCreateOptionsMenu:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu_detail_products, menu);
    saveItem = (MenuItem) menu.findItem(R.id.action_detail_product_save);
    saveItem.setVisible(isHidden());
}

私が欲しいところ:

saveItem.setVisible(isVisible());

最後に、私が望んでいたように動作します。

于 2016-12-29T13:06:57.497 に答える
0

FragmentActivityでこれを試してください

public boolean onPreparePanel(int featureId, View view, Menu menu) {
    if(isLeftMenuOpened()) return false;
    return super.onPreparePanel(featureId, view, menu);
}

メソッド FragmentActivity.onPreparePanel は、添付されたすべてのフラグメントのメニューを作成します。メニューを表示するには true を返す必要があります。false を返すと表示されません。

于 2014-09-10T20:48:31.177 に答える