无法运行MainScreen活动。始终在NullPointerException
add.setOnClickListener
在你的解决方案中,onClickListener
看起来不同,无法弄明白你的意思。
final EditText input = (EditText) findViewById(R.id.input_name);
final Button add = (Button) findViewById(R.id.btn_add);
final Dialog dialog = new Dialog(MainScreen.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.name_prompt);
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("Clicked");
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}
});
到目前为止,这是我最好的解决方案。唯一的问题是,输入完成后键盘不会自动消失。只需按下返回按钮即可关闭键盘。
AlertDialog.Builder builder = new AlertDialog.Builder(this);
final EditText input = new EditText(getBaseContext());
input.setTextColor(Color.BLACK);
input.setHint(R.string.hint_name);
input.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});
input.setInputType(InputType.TYPE_CLASS_TEXT);
input.setMaxLines(1);
input.setFocusable(true);
builder.setCancelable(false);
builder.setView(input);
builder.setPositiveButton("ADD", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (input.getText().length() == 0)
players.add(new Player(0, "Nobody"));
else
players.add(new Player(0, input.getText().toString()));
}
});
builder.show();
input.requestFocus();
答案 0 :(得分:0)
好的,只是为了给你一个想法。
修改强> 新答案问题1:
alert.setNegativeButton(cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
saveimage();
InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(input.getWindowToken(), 0);
dialog.cancel();
}
});
回答问题2:
builder.setCancelable(false);
这应该让你去。