我有以下问题:
在一个片段里面说FragmentTest,我有以下帖子:
new Thread(new Runnable() {
public void run() {
...
if (condition) {
if (isAdded()) {
getActivity.runOnUiThread(new Runnable () {
public void run() {
rightEditText.addTextChangedListener(FragmentTest.this);} }
}
}
}
...
}
}).start;
在onCreate方法中。
FragmentTest实现了TextWatcher接口,但没有调用任何接口方法。
答案 0 :(得分:1)
公共类MainActivity扩展AppCompatActivity实现TextWatcher { EditText edttext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edttext = (EditText) findViewById(R.id.editText);
edttext.addTextChangedListener(this);
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,"change",Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void afterTextChanged(Editable editable) {
}
}
答案 1 :(得分:1)
将评论迁移到答案:
为什么需要在单独的线程中执行此操作?我认为问题是所有UI组件都在主UI线程上运行。没有线程就试试吧。
我想这里不需要进一步解释。 OP将他的代码迁移到UI线程并且工作正常。