• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何启用的ContextMenu

Android 来源:3D-kreativ 7次浏览

/禁用的项目,我可以在此通过ContextMenu禁用的项目:在onCreateContextMenu,如果我有什么如何启用的ContextMenu

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

,但后来想用同样的活动中设置为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!!!! 

     } 
    } 
} 

}

===========解决方案如下:

你应该写代码来启用/禁用选项菜单onPrepareOptionsMenu明确提及here。

@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价值为true/false,没有别的。您不必担心它是否会被触发,因为onPrepareOptionsMenu()总是在您点击选项按钮时触发。但是在更高版本的OS 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; 
    } 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)