【问题标题】:OnClick for Android "arrow" button on EditText keyboardOnClick for Android EditText 键盘上的“箭头”按钮
【发布时间】:2015-11-19 03:30:11
【问题描述】:

我已经搜索和搜索,但似乎无法按下 android EditText 键盘上的“箭头”键。对我来说,它是退格正下方的按钮,看起来像一个箭头。

我尝试过使用:

            @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {


            System.out.println(actionId);

            if (event.getAction() != KeyEvent.ACTION_DOWN) {
                System.out.println("event.getAction() != KeyEvent.ACTION_DOWN");
                return false;
            }

            if (actionId == EditorInfo.IME_ACTION_NEXT) {
                System.out.println("keyCode == KeyEvent.FLAG_EDITOR_ACTION");

                trialNumber++;
                trialNumberTextView.setText("Trial" + Integer.toString(trialNumber));

                return true;
            }

            System.out.println("false");

            return false;
        }

    });

编辑文本:

<EditText
    android:id="@+id/sack_edit_text"
    android:textSize="30dp"
    android:textAlignment="center"
    android:hint="@string/trial_hint"
    android:layout_centerInParent="true"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"
    android:digits="0123456789."
    android:maxLength="2"/>

但是当我点击箭头按钮时什么都没有打印出来。但是,这适用于键盘上的数字。我曾尝试在 EditText xml 中将箭头按钮更改为完成按钮,但这也不起作用。有谁知道这是为什么?

【问题讨论】:

    标签: android onclick onclicklistener


    【解决方案1】:

    在您的布局中,只需设置 XML 属性 android:imeOptions="actionNext"。您需要在 xml 中将您的 edittext 单行设为 true。

    android:singleLine="true"
    

    并捕捉键盘上的下一个动作,例如:

     some_edittext.setOnEditorActionListener(new OnEditorActionListener() {
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if (actionId == EditorInfo.IME_ACTION_NEXT) {
                    some_button.performClick();
                    return true;
                }
                return false;
            }
        });
    

    另请查看This So post,了解有关软键盘操作的详细说明。

    【讨论】:

    • 当我现在点击下一步按钮时仍然没有任何反应。
    • @Brejuro 你到底想用这个实现什么。我只是想弄清楚你的原因是什么,以便我可以提供更好的帮助。
    • 一旦用户点击键盘上的箭头按钮,我希望能够执行一系列操作。就像在 onClick 上的箭头按钮一样。
    • @Brejuro 你希望你的编辑文本是多行还是单行?
    • @Brejuro 检查新答案。
    【解决方案2】:

    android:imeOptions="actionNext" 添加到 XML 中的 EditText。

    接下来,像这样在你的edittext上设置OnEditorActionListener

    etSack.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    
                ...your code...
    
                if (actionId == EditorInfo.IME_ACTION_NEXT) {
                  System.out.println("keyCode == KeyEvent.FLAG_EDITOR_ACTION");
    
                  trialNumber++; 
                  trialNumberTextView.setText("Trial" +        Integer.toString(trialNumber));
    
                  return true; 
                } 
    
                System.out.println("false");
                return false;
            }
    
        });
    

    【讨论】:

    • 现在我收到了这条消息Attempt to invoke virtual method 'int android.view.KeyEvent.getAction()' on a null object reference
    • 请查看更新代码。使用actionId 代替事件对象。
    • 您是否完全删除了event 对象的使用?另外,您是否在 xml 中添加了 imeOptions 标记?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    相关资源
    最近更新 更多