0
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_screen, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.menu_settings:
        Intent Options = new Intent(this,
                Options.class);
        this.startActivity(Options);
        break;
    default:
        return super.onOptionsItemSelected(item);
    }

    return true;
}

onOptionsItemSelected() が、設定したアクティビティに送られません。前の画面に戻るだけです。エラーなどはありませんが、画面が表示されますか? マニフェスト ファイルでも Options.class を宣言しました。

何か案は?

編集:

Options.class

import android.app.Activity;
import android.os.Bundle;

public class Options extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.options);
   }
}

main_screen.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_settings"
    android:title="@string/menu_settings"
    android:orderInCategory="100"
    android:showAsAction="never" />

LogCat: 私をアクティビティに送り、すぐにキックバックします

02-04 12:26:55.494: I/ActivityManager(150): Starting activity: Intent { cmp=com.app.test/.Options } from pid 7978
02-04 12:26:55.504: I/ActivityManager(150): Starting activity: Intent { cmp=com.app.test/.MainScreen (has extras) } from pid 7978
4

2 に答える 2

0

私にとっては、右のキャッチブロックに入らず、デフォルトのオプションを実行しているように見えます。それを試してください:

public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    getMenuInflater().inflate(R.menu.main_screen, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.menu_settings:
        Intent Options = new Intent(this,
                Options.class);
        this.startActivity(Options);
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }


}

うまくいかない場合は、ログやトーストなどを入れて、うまくいくかどうかを確認します

 case R.id.menu_settings:
于 2013-02-04T18:50:44.983 に答える