Android: откройте всплывающее диалоговое окно из меню параметров - PullRequest
1 голос
/ 31 августа 2011

Возможно ли иметь пункт меню параметров, который открывает диалоговое окно? вот что я получил:

public class main extends Activity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int score;

    SharedPreferences stats = getSharedPreferences("TRHprefs", MODE_WORLD_READABLE);

    score = stats.getInt("score", 0);

    switch (item.getItemId()) {

        case R.id.score:

            Context mContext = getApplicationContext();
            Dialog dialog = new Dialog(mContext);

            dialog.setContentView(R.layout.options_menu);
            dialog.setTitle("Hero Stats");

            TextView b10 = (TextView) dialog.findViewById(R.id.tolevel);
            b10.setText("Score: " + score);

            dialog.setCancelable(true);
            dialog.show();

                            break;
        case R.id.options:     
            //Options

                            break;
        case R.id.quit: 
            //Quit
                            break;
    }
    return true;
}
}

Когда я выбираю кнопку параметров счета, приложение закрывается. Есть идеи?

1 Ответ

1 голос
/ 31 августа 2011

Вы должны включить вывод logcat, чтобы было легче определить, что именно идет не так, но, глядя на код, я ожидаю, что либо:

  1. В файле макета options_menu.xml произошла ошибка, и строка TextView b10 = (TextView) dialog.findViewById(R.id.tolevel); возвращает нулевое значение для b10. Если это произойдет, следующая строка вызовет исключение NullPointerException, и приложение принудительно закроется.
  2. Dialog dialog = new Dialog(mContext); терпит неудачу, потому что вы передаете ApplicationContext, а не Activity. Попробуйте использовать Dialog dialog = new Dialog(this);.
...