Java OnClick Listener不适用于小屏幕尺寸?

Java OnClick Listener不适用于小屏幕尺寸?,java,android,onclick,Java,Android,Onclick,因此,我有一些代码为一个按钮设置onClickListener,该按钮似乎在屏幕尺寸小于4英寸的设备上不起作用,但仅适用于特定的按钮。我不知道为什么,因为它似乎不是一个有效的操作系统级版本,而只是屏幕大小 我在onclick方法中有日志代码,它显示了所有正确注册和启动的按钮,除了new_游戏按钮。如果您能提供有关为什么会发生这种情况的任何信息,我们将不胜感激 来自OnCreate的代码: Button acknowledgements = (Button) findViewById(R.id.a

因此,我有一些代码为一个按钮设置onClickListener,该按钮似乎在屏幕尺寸小于4英寸的设备上不起作用,但仅适用于特定的按钮。我不知道为什么,因为它似乎不是一个有效的操作系统级版本,而只是屏幕大小

我在onclick方法中有日志代码,它显示了所有正确注册和启动的按钮,除了new_游戏按钮。如果您能提供有关为什么会发生这种情况的任何信息,我们将不胜感激

来自OnCreate的代码:

Button acknowledgements = (Button) findViewById(R.id.acknolwedgments_word_Game);
acknowledgements.setOnClickListener(this);
Button quit = (Button) findViewById(R.id.quit_word_game_button);
quit.setOnClickListener(this);
Button new_game = (Button) findViewById(R.id.word_game_new_Button);
Log.e("NEW GAME BUTTON", String.valueOf(new_game));
new_game.setOnClickListener(this);
Log.e("SET ONCLICK", "DONE");
OnClickListener:

public void onClick(View view) {
    int id = view.getId();
    Log.e("CLICKED BUTTON", String.valueOf(view));
    if (id == R.id.quit_word_game_button){
        Intent i = new Intent(this, Game.class);
        startActivity(i);
    }
    else if (id == R.id.acknolwedgments_word_Game){
        Intent i = new Intent(this, Acknowledgements.class);
        startActivity(i);
    }
    else if (id == R.id.word_game_new_Button){
        final AlertDialog alert = new AlertDialog.Builder(word_game_mainscreen.this).create();
        final EditText edit = new EditText(getBaseContext());
        edit.setHint("Username");
        alert.setView(edit);
        alert.setButton(DialogInterface.BUTTON_NEGATIVE, "CANCEL", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                alert.dismiss();
            }
        });
        alert.setButton(DialogInterface.BUTTON_POSITIVE, "PLAY!", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                final String opponent = String.valueOf(edit.getText());
                new AsyncTask(){

                    @Override
                    protected Object doInBackground(Object[] objects) {
                        //Code to synchronize it to a server
                    }

                    @Override
                    protected void onPostExecute(Object o) {
                        super.onPostExecute(o);
                        Log.e("POST EXECUTE", (String)o);
                        //Creates intent to take you to the game
                    }
                }.execute();
            }
        });
        alert.show();
    }
    else if (id == R.id.togglesound){
        ToggleButton music = (ToggleButton) findViewById(R.id.togglesound);
        if (music.isChecked()){
            Music.play(this, R.raw.wordgame);
        }
        else{
            Music.stop(this);
        }
    }
}

简单的建议:
swith
case比
if-else
class\u名称要好得多。这个
getBaseContext()
更友好

为了显示,我们必须首先创建生成器。类似于:

AlertDialog dialog;
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setIcon(...).setTitle(...)
.setView(...)
.setPositiviButton(...)
.setNegativeButton(...);

//Now create the builder and assign to AlertDialog
dialog = builder.create();
dialog.show;

谢谢你的建议。我确实转换了AlertDialog builder,但显示了相同的结果,它在我的手机和其他大屏幕设备上工作,但在较小的屏幕模拟器上不工作。结果表明,我在小尺寸的低密度屏幕上的按钮上有一个不受欢迎的滚动视图。上面的代码没有问题(至少除了格式错误之外)。