【问题标题】:How to access view in addTextChangedListener?如何访问 addTextChangedListener 中的视图?
【发布时间】:2018-12-11 04:16:31
【问题描述】:

我想添加一个方法,其中将视图作为参数传递下面是直接添加 somemethod(view) 显示错误的代码。

abc.addTextChangedListener(new TextWatcher() {
  @Override
  public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

  @Override
  public void onTextChanged(CharSequence s, int start, int before, int count) {
   somemethod(view); // this is where I stuck
  }
 }
}

@Override
public void afterTextChanged(Editable s) {

}
});
.....
somemethod(View view) {}

【问题讨论】:

  • 这里view是什么
  • 您遇到的错误是什么
  • 错误是什么?什么观点?有什么方法?
  • 错误是'找不到符号视图'
  • somemethod 是一个带有参数View view 的简单方法,它被用于多个代码块中。它位于公共类MainActivity 内部和protected void onCreate 外部。

标签: android android-studio addtextchangedlistener


【解决方案1】:
private class MyTextWatcher implements TextWatcher {

    private View view;

    private MyTextWatcher(View view) {
        this.view = view;
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        //access view
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        //access view
    }

    @Override
    public void afterTextChanged(Editable s) {
        //access view
    }
}

将侦听器添加到视图

editText.addTextChangedListener(new MyTextWatcher(editText));

【讨论】:

  • 我们可以使MyTextWatcher抽象而不实现方法,保持View对象公开。所以TextView可以在实现内部访问,并且可以为每个TextView更改实现
【解决方案2】:

我猜你的问题有点含糊。如果您是从 OnCreate() 运行此代码,您可以按如下方式获取视图,否则如果它来自其他 onclick 方法,则视图将作为参数可用。

final View view = findViewById(android.R.id.content);

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2015-04-28
    相关资源
    最近更新 更多