OnEditorActionListener

OnEditorActionListener

我是编码新手,一旦用户将数据输入EditText并在软键盘上按“ Go”,尝试使用OnEditorActionListener来帮助执行操作时,就会遇到错误。我已经搜索过,大多数提供的解决方案都假定OnEditorActionListener已被导入。

用作指导以生成我自己的代码的文章:

https://developer.android.com/training/keyboard-input/style.html

https://github.com/codepath/android_guides/wiki/Basic-Event-Listeners

我的XML代码:

<EditText
        android:id="@+id/editTextCurrentBalance"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:imeOptions="actionGo"
        android:inputType="numberDecimal"
        android:singleLine="true">
        <requestFocus />
</EditText>


我的Java代码(摘要):

import android.widget.TextView.OnEditorActionListener;

EditText editTextListener = (EditText) findViewById(R.id.editTextCurrentBalance);
editTextListener.setOnEditorActionListener(new OnEditorActionListener(){...});


第一个错误:“ import android.widget.TextView.OnEditorActionListener;”给我一个错误,提示“未使用的导入语句”,并且整个代码行都是灰色的。

第二个错误:“无法解析符号'setOnEditorActionListener'”

修复尝试:当我按CTRL + I时,出现一条消息“未找到要实现的方法”。

感谢任何帮助!

更新:我的OnEditorActionListener的Java代码不在OnCreate方法的括号内。一旦放入内部,错误就会清除。

最佳答案

您好,欢迎来到

第一个错误:好吧,这实际上不是错误,这只是IDE向您发出的警告,表示您已导入未使用的类。删除所有未使用的导入是一个好习惯(Android Studio中为Ctrl + Alt + O)

第二个错误:我相信这是因为您尚未导入EditText类而弹出的,但是我不确定

无论如何,抢劫这个

//We are import the classes you need here
import android.widget.EditText;
import android.widget.TextView;

//here is just the onCreate method from an Activity,
//I have left out most of the boilerplate code

public class MainActivity extends AppCompatActivity {
    //make sure you are placing the code in onCreate method, or
    //a method called from onCreate, or any method other life cycle
    //method that suits yours needs
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        /*snip*/

        //grabing the EditText object by it's ID you defined in the layout file
        //I have renamed the object to "editText" because "listener"
        //suffix made no sense here, it's an EditText class you are
        //crating, which is not a listener
        EditText editText = (EditText) findViewById(R.id.editTextCurrentBalance);

        //here we are creating a new anonymous class and setting to
        //trigger when an "Editor Action" happens on editTextListener
        editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
                //do something here
                return false;
            }
        });
    }


如果我们不打算在其他地方重用该类,则匿名类只是创建新类的一种简单方法。这是针对您当前的需求的

希望对您有所帮助:)并祝您学习Android和Java顺利

10-07 19:00