1

我正在尝试从选项菜单启动一项活动,但我的应用程序不断崩溃。我收到的唯一错误是 Eclipse 调试窗口中的 ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord,Intent) 错误。

下面是我目前正在使用的代码,但请记住,我尝试了多个选项,所有这些选项都以相同的痛苦结束,在同一段代码 - startActivity 语句(通过使用断点发现,因为我'我不确定如何在 LogCat 窗口中查看堆栈跟踪,如我之前的问题Android/Eclipse: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 类或其关联的布局文件没有问题,但选项菜单中的实现存在问题。

我还在另一个应用程序中实现了与上面所示相同的方法(在代码中)并且没有任何问题,所以我在这里真的很茫然。

所有帮助将不胜感激。

谢谢,亚当。

4

5 回答 5

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;
}
于 2012-07-21T04:39:07.977 回答
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;


         }

    }
于 2012-07-21T04:44:20.257 回答
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;
    }
于 2012-07-21T04:48:19.253 回答
0

我现在已经解决了这个问题。

原来问题根本不在ListActivity课堂上,而是在ColourActivity课堂上。

我试图解析 中的一些颜色onCreate,但我忘记在其中一个 RGB 颜色字符串中包含 #,因此崩溃了!

非常感谢大家的帮助,亚当。

于 2012-07-21T12:45:51.167 回答
0

嗨亚当,当我在我的模拟器上测试时,您的代码似乎非常好,请检查您是否已将类名“ColourActivity”添加到清单文件中。

  <activity android:name="ColourActivity"></activity>
于 2012-07-21T05:09:58.173 回答