Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在一个活动中创建多个上下文菜单_Android - Fatal编程技术网

Android 在一个活动中创建多个上下文菜单

Android 在一个活动中创建多个上下文菜单,android,Android,嗨,我正在尝试在一个活动中创建多个上下文菜单。 有两个按钮,我想为每个按钮创建不同的上下文菜单。 有谁能给我提供建议或让我参考一些工作实例吗 这是我当前的代码 registerForContextMenu(btn_1); registerForContextMenu(btn_2); btn_1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { openCont

嗨,我正在尝试在一个活动中创建多个上下文菜单。 有两个按钮,我想为每个按钮创建不同的上下文菜单。 有谁能给我提供建议或让我参考一些工作实例吗

这是我当前的代码

registerForContextMenu(btn_1);
registerForContextMenu(btn_2);


btn_1.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {

        openContextMenu(v);
    }   
});

btn_2.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {

        openContextMenu(v);
    }   

});


    }

@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        getMenuInflater().inflate(R.menu.media_menu, menu);
        menu.setHeaderTitle("Context menu for btn_1");
        menu.setHeaderIcon(R.drawable.icon_media_up); 
}

@Override
public boolean onContextItemSelected(MenuItem item) {
        switch(item.getItemId()) {
            case R.id.photo:
                Toast.makeText(this, "One", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.video:
                Toast.makeText(this, "Two", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.audio:
                Toast.makeText(this, "Three", Toast.LENGTH_SHORT).show();
                return true;
            }
        return super.onContextItemSelected(item);
    }

您必须在
onCreateContextMenu
方法中处理此问题。有一个参数
View
,就是您单击的视图。因此,通过使用该参数,可以对不同的菜单进行充气。比如说

@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        if(v.getId() == R.id.first_button)
             inflate one menu
        else if(v.getId() == R.id.second_button)
             inflate another menu        
}
这是可行的解决方案
 @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        // TODO Auto-generated method stub
        super.onCreateContextMenu(menu, v, menuInfo);

     MenuInflater menuiflatr=getMenuInflater();
         if(v.getId() == R.id.ChooseSession){


        menuiflatr.inflate(R.menu.session_menu, menu);
         menu.setHeaderTitle("Choose Session Type");
         menu.setHeaderIcon(R.drawable.ic_launcher);
         MenuItem item_individual=menu.findItem(R.id.individual);
         MenuItem item_group=menu.findItem(R.id.group);
         if(itemselection_for_sessiontype==1)item_individual.setChecked(true);
         else if(itemselection_for_sessiontype==2)item_group.setChecked(true);
    }
        else if(v.getId() == R.id.ChooseTrajectory){
             //inflate another menu     
             menuiflatr.inflate(R.menu.trajectory_menu, menu);
             menu.setHeaderTitle("Enable Trajectory");
             menu.setHeaderIcon(R.drawable.ic_launcher);
             MenuItem item_On=menu.findItem(R.id.on);
             MenuItem item_Off=menu.findItem(R.id.off);
             if(itemselection_for_trajectory==1)item_On.setChecked(true);
             else if(itemselection_for_trajectory==2)item_Off.setChecked(true);
    }
        else if(v.getId() == R.id.ChooseMapeType){
            //inflate another menu     
            menuiflatr.inflate(R.menu.maptype_menu, menu);
            menu.setHeaderTitle("Choose Map Type");
         menu.setHeaderIcon(R.drawable.ic_launcher);
       }
   }`
  `
     @Override
     public boolean onContextItemSelected(MenuItem item) {
        switch(item.getItemId()){
        case R.id.individual:
            Toast.makeText(this, "Session Type Individual selected!",     `   `Toast.LENGTH_SHORT).show();
            item.setChecked(true);
            itemselection_for_sessiontype=1;
            return true;

    case R.id.group:
        Toast.makeText(this, "Session Type Group selected!", Toast.LENGTH_SHORT).show();
        item.setChecked(true);
        itemselection_for_sessiontype=2;
        return true;

    case R.id.on:
        Toast.makeText(this, "Trajectory Mode Enabled", Toast.LENGTH_SHORT).show();
        item.setChecked(true);
        itemselection_for_trajectory=1;
        return true;

    case R.id.off:
        Toast.makeText(this, "Trajectory Mode Disabled!",               Toast.LENGTH_SHORT).show();
        item.setChecked(true);
        itemselection_for_trajectory=2;
        return true;
    }





    return super.onContextItemSelected(item);
    }

    public void selectSession(View view){
        registerForContextMenu(view);

        openContextMenu(view);
    }