我正在尝试从选项菜单启动活动,但我的应用程序一直在崩溃。我收到的唯一错误是Eclipse中调试窗口中的ActivityThread.performLaunchActivity(ActivityThread $ ActivityRecord,Intent)错误。
下面是我目前正在使用的代码,但请记住,我尝试了多个选项,所有这些选项都在相同的代码中以同样的代码结束 - startActivity语句(通过使用断点发现) ,因为我不知道如何在LogCat窗口中看到堆栈跟踪,如我在上一个问题Android/Eclipse: assistance with LogCat中所述。)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.changescheme, menu);
menu.findItem(R.id.changeScheme).setIntent(new Intent(this, ColourActivity.class));
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
this.closeOptionsMenu();
startActivity(item.getIntent());
return true;
}
这是changescheme.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/changeScheme" android:title="Change Colour Scheme" android:icon="@android:drawable/ic_menu_edit"></item>
</menu>
我也尝试在onOptionsItemSelected块中使用switch(item.getItemId())语句而不是onCreateOptionsMenu块中的menu.findItem,但仍然没有运气。
我已在我的清单文件中定义了活动。我也可以从常规按钮开始活动,第一次在设备上打开应用程序时,活动会在我的启动画面后立即启动,而且我对这两种方法都没有任何问题。
对我而言,这表明ColourActivity类或其关联的布局文件没有任何问题,但是选项菜单中的实现存在问题。
我也在不同的应用程序中实现了如上所示(在代码中)的相同方法,没有任何问题,所以我真的很茫然。
非常感谢所有帮助。
谢谢,亚当。
答案 0 :(得分:0)
你要激活的意图应该指向某个目标组件,而不是你的情况,而是应该做以下事情:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
this.closeOptionsMenu();
Intent intent = new Intent(ActivityA.this, ColourActivity.class);
/*Here ActivityA is current Activity and ColourActivity is the target Activity.*/
startActivity(intent);
return true;
}
答案 1 :(得分:0)
试试这个,
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflator = getMenuInflater();
inflator.inflate(R.menu.changescheme, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId())
{
case R.id.changeScheme:
Log.d("ChangeScheme", "Selected : ChangeScheme Option");
startActivity(new Intent(MainAcitivity.this, ColourActivity.class));
return true;
caseR.id.help:
Log.d("HelpMenu", "Selected : Help Option");
//Here put your code
return true;
}
}
答案 2 :(得分:0)
检查一下:
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.changescheme, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
case R.id.changeScheme:
//start activity here
break;
case R.id.help:
//start activity here
break;
}
return true;
}
答案 3 :(得分:0)
嗨,亚当您的代码在我的模拟器上测试时似乎非常好,请检查您是否已将类名“ColourActivity”添加到您的清单文件中。
<activity android:name="ColourActivity"></activity>
答案 4 :(得分:0)
我现在已经解决了这个问题。
事实证明问题根本不在ListActivity
类,实际上是在ColourActivity
类。
我试图解析onCreate
中的一些颜色,但我忘记将#包含在其中一个RGB颜色字符串中,因此崩溃了!
感谢大家的帮助,亚当。