1

オプションメニューからアクティビティを開始しようとしていますが、アプリがクラッシュし続けます。私が受け取る唯一のエラーは、EclipseのデバッグウィンドウでのActivityThread.performLaunchActivity(ActivityThread $ ActivityRecord、Intent)エラーです。

以下は私が現在使用しているコードですが、同じコードで、すべて同じ悲惨な結果に終わる複数のオプションを試したことを覚えておいてください-startActivityステートメント(ブレークポイントを使用して発見されたので、以前の質問「 Android/Eclipse:LogCatの支援」で説明したように、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>

onCreateOptionsMenuブロックのmenu.findItemではなくonOptionsItemSelectedブロックでswitch(item.getItemId())ステートメントを使用しようとしましたが、それでもうまくいきません。

マニフェストファイルでアクティビティを定義しました。通常のボタンからアクティビティを開始することもできます。デバイスでアプリを初めて開いたときは、スプラッシュ画面の直後にアクティビティが開始され、どちらの方法でも問題はありませんでした。

私にとってこれは、ColourActivityクラスまたはそれに関連するレイアウトファイルに問題がないことを示していますが、オプションメニューからの実装に問題があります。

また、上記と同じメソッドを(コードで)別のアプリに実装しましたが、問題はなかったので、ここで本当に困っています。

すべての助けは大歓迎です。

ありがとう、アダム。

4

5 に答える 5

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

アクティベートするインテントは、あなたの場合ではないターゲットコンポーネントを指している必要があります。代わりに、次のようにする必要があります。

@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

こんにちは。エミュレータでテストしている間、コードは完全に正常に見えます。マニフェストファイルにクラス名「ColourActivity」が追加されているかどうかを確認してください。

  <activity android:name="ColourActivity"></activity>
于 2012-07-21T05:09:58.173 に答える
0

私は今問題を解決しました。

問題はクラスではまったくなくListActivity、実際にはColourActivityクラスにあったことがわかりました。

でいくつかの色を解析しようとしましたonCreateが、RGBカラー文字列の1つに#を含めるのを忘れていたため、クラッシュしました。

アダム、みんなの助けに感謝します。

于 2012-07-21T12:45:51.167 に答える