可以通過AsyncTask獲取的結果更新自定義AlertDialog中的圖片嗎?系統會提示用戶輸入另一個用戶名,如果所輸入的用戶名有效,AsyncTask將檢查該用戶名。當返回布爾結果時,AsyncTask更新顯示檢查(對於有效)或X(對於無效)的用戶名旁邊的圖像。運行AsyncTask檢查輸入到自定義AlertDialog中的數據
我的自定義AlertDialog是被通過下面的代碼膨脹:
Fragment1 extends Fragment {
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
...
case 1:
LayoutInflater inflater = getActivity().getLayoutInflater();
View usernamePrompt = inflater.inflate(R.layout.alertdialog_username, ViewGroup)getActivity().getCurrentFocus());
AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
alert.setTitle("Send New Friend Request");
alert.setView(usernamePrompt);
alert.show();
return true;
...
佈局只包含一個ImageView的旁邊一個EditText:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<EditText
android:id="@+id/ad_et"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="textVisiblePassword|textNoSuggestions" />
<ImageView
android:id="@+id/welcomescreen_iv_username_okay"
style="@style/spacing_5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/x" />
</LinearLayout>
中的AsyncTask真的只是返回一個布爾值,但我不知道如何從這個信息更新AlertDialog中包含的視圖。這甚至有可能嗎?
編輯:這裏的的AsyncTask。(我沒加它最初是因爲我把它叫,簡單地更新一個TextView是分片(即updateUsernameView(布爾參考isValid))的部分方法我能找到如何從它所託管的Fragment中訪問AlertDialog中的視圖。我可以在EditText視圖添加一個TextWatcher,並觸發一個新的AsyncTask onTextChanged嗎?我將試試看看它是否可用,並讓所有人知道了。
private class CheckNewUsernameTask extends AsyncTask<String, Void, Boolean> {
private static final String TAG = "CheckNewUsernameTask";
@Override
protected Boolean doInBackground(String... params){
String response = ClearNetworking.checkUsername(params[0]);
Boolean result = null;
try {
JSONObject jsonResponse = new JSONObject(response);
if (jsonResponse.has(ClearJSONParser.KEY_AVAILABLE)){
result = jsonResponse.getBoolean(ClearJSONParser.KEY_AVAILABLE);
}
} catch (JSONException e) {
Log.e("TAG", "JSONException", e);
}
return result;
}
@Override
protected void onPostExecute(Boolean result){
if (result != null){
updateUsernameView(result);
} else {
updateUsernameView(false);
}
Log.i(TAG, "... available = " + result);
}
}
}
哪裏是AsyncTask? – Blackbelt
好吧,虐待它添加它,它的一個基本的Http請求 – ChrisMcJava