1

これでコンテキストメニューの項目を無効にできます:

menu.getItem(1).setEnabled(false);

onCreateContextMenuにありますが、後で同じアクティビティ内でtrueに設定したい場合はどうなりますか?実行時にそれを行うにはどうすればよいですか?

編集:

        // Create context menu
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    // TODO Auto-generated method stub
    super.onCreateContextMenu(menu, v, menuInfo);

    menu.setHeaderTitle("Options for this image"); // Title for the menu
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.activity_1_menu, menu);

    menu.getItem(1).setEnabled(false);  
}

これは、アイテムを変更して有効にする場所です。

    // Handle return values from different activities
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == Activity.RESULT_OK) {

        if (requestCode == 1) {

            // Get value from intent
            String imageId = data.getExtras().getString("imageId");

            // Show full screen image
            Bitmap bitmap = BitmapFactory.decodeFile(imageId);
            imageView.setImageBitmap(bitmap);
        }

        else if(requestCode == 2) {
            String contact1 = data.getExtras().getString("contactName");
            String contact2 = data.getExtras().getString("test");
            Toast.makeText(Activity_1.this, "" + "Value from activity 3: " + contact1 + " " + contact2, Toast.LENGTH_SHORT).show();


 CHANGE MENU ITEM 1 TO ENABLE HERE!!!!

        }
    }
}

}

4

4 に答える 4

0

hereで明確に述べられているように、 onPrepareOptionsMenuでオプション メニューを有効/無効にするコードを記述する必要があります。

@Override
    public boolean onPrepareOptionsMenu(Menu menu)
    {
        super.onPrepareOptionsMenu(menu);
        if (yourConditionIsSatisfied)
        {
            menu.getItem(1).setEnabled(true);
        } else
        {
            menu.getItem(1).setEnabled(false);
        }
        return true;
    }

yourConditionIsSatisfiedハニカム以前では、 asの値を変更するだけで済みtrue/falseます。オプションボタンをクリックするonPrepareOptionsMenu()常にトリガーされるため、トリガーされるかどうかを心配する必要はありません。ただし、より新しいバージョンの OS の場合は、 invalidateOptionsMenu()を呼び出す必要があります。invalidateOptionsMenu()をトリガーしonPrepareOptionsMenu()ます。与えられたコードに従って、次のコードを書く必要があります

protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (resultCode == Activity.RESULT_OK)
        {

            if (requestCode == 1)
            {
                // Get value from intent
                String imageId = data.getExtras().getString("imageId");
                // Show full screen image
                Bitmap bitmap = BitmapFactory.decodeFile(imageId);
                imageView.setImageBitmap(bitmap);
                // Add new menu item for context menu of the imageview
                // Write
            } else if (requestCode == 2)
            {
                String contact1 = data.getExtras().getString("contactName");
                String contact2 = data.getExtras().getString("test");
                Toast.makeText(Activity_1.this, "" + "Value from activity 3: " + contact1 + " " + contact2, Toast.LENGTH_SHORT).show();
                conditionSatisfied = true;
                invalidateOptionsMenu();
            }
        }
    }



@Override
    public boolean onPrepareOptionsMenu(Menu menu)
    {
        super.onPrepareOptionsMenu(menu);
        if (conditionSatisfied)
        {
            menu.getItem(1).setEnabled(true);
        } else
        {
            menu.getItem(1).setEnabled(false);
        }
        return true;
    }
于 2013-02-26T10:38:54.063 に答える
0

onPrepareOptionsMenu を使用する

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    menu.getItem(1).setEnabled(true);
    return true;
}

また、Android 3.0 以降では、メニューが常に開いているため、メニューを更新する場合は、invalidateOptionsMenu() を呼び出す必要があります。次に、システムが onPrepareOptionsMenu() を呼び出して、メニュー項目を更新できるようにします。

于 2013-02-26T10:48:10.373 に答える
0

適切な情報を取得するには、こちらのリンクを参照してください。基本的にコードスニペット

@Override
public boolean onPrepareOptionsMenu(Menu menu) {

    MenuItem item = menu.findItem(R.id.menu_my_item);

    if (myItemShouldBeEnabled) {
        item.setEnabled(true);
        item.getIcon().setAlpha(255);
    } else {
        // disabled
        item.setEnabled(false);
        item.getIcon().setAlpha(130);
    }
}

アイコンを少し流行らせます。

あなたのコードを楽しんでください:)

于 2015-10-09T13:26:17.463 に答える