2
我試圖在文本發生更改後的一定時間後調用函數。我有延遲設置,但由於某種原因,我的功能被調用兩次。這裏是我的代碼:在文本發生更改後的Android調用函數片段
public class ExampleFragment extends Fragment {
private EditText mText;
private Handler mHandler;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mHandler = new Handler();
View rootView = inflater.inflate(R.layout.fragment_start_process, container, false);
mText = (EditText) rootView.findViewById(R.id.editText1);
mText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(final Editable s) {
// HERE IS WHERE I WILL CALL MY FUNCTION (Prints show my issue)
System.out.println("TEXT CHANGE" + s);
final Runnable r = new Runnable() {
@Override
public void run() {
final Editable x = s;
System.out.println("DELAY TEXT " + xEditable);
}
};
mHandler.postDelayed(r, 1000);
}
});
return rootView;
}
我System.out.println語句是這樣的:
文本更改^ h
文本更改嗨
延遲文本嗨
延遲文本嗨
所以它看起來像當我把我的功能變成可運行,它會運行兩次。我只希望它運行一次(延遲文本應該只顯示一次)。任何想法我做錯了什麼?我的整個目標是在文字發生變化之後等待一段時間(以確保文本完全上傳),然後運行一次我的功能。我讀過AsyncTask可以使用,但我不熟悉這一點。任何幫助將不勝感激。
謝謝你的幫助。 – user3781214