【问题标题】:Accessing TextWatcher in another class - nullpointer exception在另一个类中访问 TextWatcher - 空指针异常
【发布时间】:2016-06-01 10:14:08
【问题描述】:

我有一个活动,它的一个功能逻辑是在另一个类中计算的,这里我计算在编辑文本字段中输入内容时,我使用文本观察器。

MainActivity 代码:

public class UnitConverter extends AppCompatActivity {
    public EditText input;
    .
    ......
    input = (EditText) findViewById(R.id.etInput);
    .........
    case Sample :
         new AnotherClass();
}

我在这个 input 字段上使用 textwatcher,

另一个类代码:

public class AnotherClass {
UnitConverter ac = new UnitConverter();
public AnotherClass() {
    ac.input.addTextChangedListener(new TextWatcher() {

        public void afterTextChanged(Editable s) {
        }

        public void beforeTextChanged(CharSequence s, int start,
                                      int count, int after) {
        }

        public void onTextChanged(CharSequence s, int start,
                                  int before, int count) {
     }
  }
}

我得到一个空指针错误,

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.addTextChangedListener(android.text.TextWatcher)' on a null object reference                                                                       

【问题讨论】:

  • 你为什么要按照你现在的方式去做?
  • 有没有更好的方法,如果那么建议我这样做
  • 只在 UnitConverter 活动类本身中做
  • 会很长,我想把它分成不同的文件...
  • 新的 UnitConverter 是实例而不是视图

标签: android nullpointerexception android-textwatcher


【解决方案1】:

您需要将您的活动引用传递给另一个类,如下所示:

MainActivity 代码:

public class UnitConverter extends AppCompatActivity {
    public EditText input;
    .
    ......
    input = (EditText) findViewById(R.id.etInput);
    .........
    case Sample :
        new AnotherClass(UnitConverter.this);
}

另一个类代码:

public class AnotherClass {
    public AnotherClass(UniteConverter ac) {
    ac.input.addTextChangedListener(new TextWatcher() {

        public void afterTextChanged(Editable s) {
        }

        public void beforeTextChanged(CharSequence s, int start,
                                  int count, int after) {
        }

        public void onTextChanged(CharSequence s, int start,
                              int before, int count) {
      }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 2013-06-26
    • 2015-03-22
    • 1970-01-01
    • 2019-09-28
    相关资源
    最近更新 更多