Android:从选项菜单中打开自定义弹出对话框

时间:2011-08-30 22:21:45

标签: android menu dialog popup options

是否可以使用选项菜单项打开对话框窗口? 这就是我得到的:

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 个答案:

答案 0 :(得分:1)

你应该包含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);