从另一个活动的上下文菜单启动一个活动,意图



我不知道如何启动Intent以从我的ContextMenu调用另一个活动。我有以下代码:

    public void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.profile);
    Button button5 = (Button) findViewById(R.id.button5);
        registerForContextMenu(button5);
    //...code...//
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.setHeaderTitle("Profile Options");
        menu.add(0,v.getId(),0, "Header");
        menu.add(0,v.getId(),0, "Header");
**This is where my Intent is ** Intent intent = new Intent (CustomizeActivity2.this, CustomizeActivity.class);
    startActivity(intent);
    public boolean OnContextItemSelected(MenuItem item) {
        if(item.getTitle()=="Edite Profile"){
            function1(item.getItemId());
            }
        else {return false;}
        return true;
    }
    public void function1(int id){
        Toast.makeText(this,"Edit Profile Called", Toast.LENGTH_SHORT).show();  
    }
我想在单击

ContextMenu中的项目时开始另一个活动,我有一些设置。

你的代码中有一些错误。构建ContextMenuonCreateContextMenu方法:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.setHeaderTitle("Profile Options");
        menu.add(0, 1000, 0, "Header1"); // give your menus distinct ids!!!
        menu.add(0, 1001, 0, "Header2");
}

以及当用户从ContextMenu中选择其中一个选项并启动新活动时调用的回调:

//the correct callback name starts with o and not O
@Override
public boolean onContextItemSelected(MenuItem item) {
   switch (item.getItemId()) {
   case 1000:
       //first ContextMenu option I picked this to start the  new activity
       Intent i = new Intent(CurrentActivityName.this, OtherActivityName.class);
       startActivity(i);
   break; 
   case 1001:
      //stuff for option 2 of the ContextMenu
   break;
   }
   return super.onContextItemSelected(item);
}

要在代码中的任何位置启动活动,您需要创建一个新的意图,将目标组件设置为目标活动类,然后使用此意图参数调用 startActivity 方法。

// in my Util.java:
static void switchActivity(Activity from, Class<?> to) {
    Intent intent = new Intent(from, to);
    from.startActivity(intent);
    from.finish(); // only do this if you want to close the current activity
}
// in your context menu:
Util.switchActivity(this, AnotherActivity.class);

确保已在清单中声明了第二个活动(您正在调用的活动)。您不会收到编译错误,但 Android 无法启动清单中未定义的活动,即使它位于您当前的包/apk 中也是如此。

如果您愿意,请向我们展示您的清单.xml文件包含的内容,如果需要更改任何内容,我们会有更好的主意。

编辑:确保您在清单中看到类似的东西

<activity android:name=".CustomizeActivity" />  

最新更新