gpt4 book ai didi

Android:在 TextChangedListener 中获取 EditText 的父 View

转载 作者:行者123 更新时间:2023-11-29 15:49:27 26 4
gpt4 key购买 nike

如何在 TextChangedListener 中获取 EditText 的父 View ?我想在文本更改时获取其父 View 的标签。

由于 Button.OnClick() 直接将 View 作为参数,我们可以使用 getParent(),如何使用 EditText 做类似的事情?

编辑:我需要避免进行全局引用。最好知道是否有任何其他事件或方法可以执行此操作。

最佳答案

方法一:创建实例变量

如果您设置一个实例变量来引用 View ,您将能够在整个类(class)中访问它。

首先将 EditText 变量定义为类中的实例变量

private EditText mEditText; 

然后在某些地方,例如 onCreateonViewCreated 您可以初始化您的 EditText 并添加监听器。

mEditText = (EditText)findViewById(R.id.edit_text);
mEditText.addTextChangedListener(new TextWatcher() {

@Override
public void afterTextChanged(Editable s) {

}

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

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Get the parent view of the edit text here
View parentView = mEditText.getParent();
}

});

现在您可以在任何您喜欢的地方使用 mEditText 变量,如上所示。

方法二:不用实例变量求解

如果您不想在 fragment 或 Activity 中创建像 mEditText 这样的实例变量,您可以创建自己的抽象类来实现 TextWatcher 作为替代解决方案。

public abstract class MyTextWatcher implements TextWatcher{

private EditText editText;

public MyTextWatcher(EditText editText) {
this.editText = editText;
}

public EditText getEditTextView() {
return editText;
}

public ViewParent getParentView() {
return editText.getParent();
}

public View getRootView() {
return editText.getRootView();
}
}

这将允许您向 TextWatcher 提供 EditText,以便在该范围内访问它。

    mEditText = (EditText)findViewById(R.id.edit_text);

// Create a new instance of the MyTextWatcher class and pass it your EditText
mEditText.addTextChangedListener(new MyTextWatcher(mEditText) {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void afterTextChanged(Editable editable) {
// Get the view parent here
ViewParent viewParent = getParentView();
}
});

您添加到 MyTextWatcher 类的任何方法现在都可以从您在 fragment 或 Activity 中实现的每个回调方法访问。

关于Android:在 TextChangedListener 中获取 EditText 的父 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31143773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com