1

データベース クラスのオプション メニューを作成しました。オプションメニューを起動したら、指定したボタンをクリックするだけで目的のアクティビティを実行したいと思います。

しかし、問題は、任意のオプションをクリックすると、MainMenu.class. なぜこれが起こっているのですか?

コード:

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        new MenuInflater(this).inflate(R.menu.optionmenu, menu);
        return(super.onCreateOptionsMenu(menu));
    }


    public boolean onOptionsItemSelected ( MenuItem item){
        switch (item.getItemId())
        {
        case R.id.item1:
        { Intent r=new Intent(Database.this,MainMenu.class);
            startActivity(r);
        }

        case R.id.takesurvey:
        { 
            Toast toast=Toast.makeText(this, "check", 2000);
               toast.show();
            Intent r1=new Intent(Database.this,SurveyActivity.class);
            startActivity(r1);
        }

        case R.id.viewstats:
        { Intent r2=new Intent(Database.this,Stats.class);
            startActivity(r2);
        }

        case R.id.changesort:
        { Intent r3=new Intent(Database.this,MainMenu.class);
            startActivity(r3);
        }

        case R.id.menuexit:
        { Intent r4=new Intent(Database.this,MainMenu.class);
            startActivity(r4);
        }
        }
        return true;
    }
4

3 に答える 3

8

いずれの場合も break ステートメントが欠落しているようです。

于 2012-04-06T01:24:03.647 に答える
1

onOptionsItemSelected() の Switch ステートメントの条件ごとに、true を返す必要があります。ケースを処理する場合は true を返す必要があります。そうでない場合は、そのスーパー クラスの実装を呼び出す必要があります。

case R.id.item1:
    { Intent r=new Intent(Database.this,MainMenu.class);
        startActivity(r);
        return true;
    }

詳細については、これをご覧ください http://developer.android.com/guide/topics/ui/menus.html#options-menu

于 2012-04-06T01:24:15.007 に答える