如何通过onEdtitorActionListener模拟警报对话框操作(How can simulate Alert Dialog action via onEdtitorActionListener)
我有一个自定义警报对话框,EditText和正负按钮给用户4位数字。 它工作正常,但我想做一些事情,当用户输入4位数字并点击软键盘的“完成”按钮,做一些代码,如正面按钮,然后关闭对话框。 这是我的代码:
final AlertDialog.Builder builder = new AlertDialog.Builder(ConversationActivity.this); builder.setTitle("Test"); final EditText input = new EditText(ConversationActivity.this); input.setInputType(InputType.TYPE_CLASS_NUMBER); input.setImeOptions(EditorInfo.IME_ACTION_DONE); input.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if(actionId == EditorInfo.IME_ACTION_DONE){ // what should I want.?! } return false; } }); int maxLength = 4; input.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLength)}); builder.setView(input); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // Do something } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.show();谢谢。
I have a custom Alert Dialog that an EditText and positive and negative button to give 4 digits from user. it works fine, but I want to do something that when the user enter 4 digits and click on "DONE" button of soft keyboard, do some codes like positive button and then CLOSE the Dialog. this is my code:
final AlertDialog.Builder builder = new AlertDialog.Builder(ConversationActivity.this); builder.setTitle("Test"); final EditText input = new EditText(ConversationActivity.this); input.setInputType(InputType.TYPE_CLASS_NUMBER); input.setImeOptions(EditorInfo.IME_ACTION_DONE); input.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if(actionId == EditorInfo.IME_ACTION_DONE){ // what should I want.?! } return false; } }); int maxLength = 4; input.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLength)}); builder.setView(input); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // Do something } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.show();thanks.
最满意答案
你可以这样做 :-
1)在您的活动中全局声明警报Dialog实例
.. .. //Alert Dialog instance private AlertDialog alertDialog; int maxLength = 4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); .. ..并使用该实例来关闭警报对话框
final AlertDialog.Builder builder = new AlertDialog.Builder( MainActivity.this); builder.setTitle("Test"); final EditText input = new EditText(MainActivity.this); input.setInputType(InputType.TYPE_CLASS_NUMBER); input.setImeOptions(EditorInfo.IME_ACTION_DONE); input.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_DONE) { // This is How you do it want.?! if (input.getText().toString().length() == maxLength) { //Use alert Dialog instance to dismiss alertDialog.dismiss(); Toast.makeText(getApplicationContext(), "You Entered" + input.getText().toString(), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "Please Enter 4 Digits", Toast.LENGTH_SHORT) .show(); } } return false; } }); input.setFilters(new InputFilter[] { new InputFilter.LengthFilter( maxLength) }); builder.setView(input); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "You Entered" + input.getText().toString(), Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // This should I want.?! dialog.cancel(); } }); //Assign alert Dialog instance like this.. alertDialog = builder.show();希望这对你有用!
You can do this :-
1) Globally declare alert Dialog instance in your activity
.. .. //Alert Dialog instance private AlertDialog alertDialog; int maxLength = 4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); .. ..And use that instance to dismiss your alert dialog
final AlertDialog.Builder builder = new AlertDialog.Builder( MainActivity.this); builder.setTitle("Test"); final EditText input = new EditText(MainActivity.this); input.setInputType(InputType.TYPE_CLASS_NUMBER); input.setImeOptions(EditorInfo.IME_ACTION_DONE); input.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_DONE) { // This is How you do it want.?! if (input.getText().toString().length() == maxLength) { //Use alert Dialog instance to dismiss alertDialog.dismiss(); Toast.makeText(getApplicationContext(), "You Entered" + input.getText().toString(), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "Please Enter 4 Digits", Toast.LENGTH_SHORT) .show(); } } return false; } }); input.setFilters(new InputFilter[] { new InputFilter.LengthFilter( maxLength) }); builder.setView(input); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "You Entered" + input.getText().toString(), Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // This should I want.?! dialog.cancel(); } }); //Assign alert Dialog instance like this.. alertDialog = builder.show();Hope this will work for you !
更多推荐
发布评论