我不知道如何启动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
中的项目时开始另一个活动,我有一些设置。
你的代码中有一些错误。构建ContextMenu
的onCreateContextMenu
方法:
@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" />