如何通过onEdtitorActionListener模拟警报对话框操作(How can simulate Alert Dialog action via onEdtitorActionListene

编程入门 行业动态 更新时间:2024-10-27 17:23:57
如何通过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 !

更多推荐

本文发布于:2023-07-24 20:58:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1251045.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:警报   对话框   操作   onEdtitorActionListener   action

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!