[英]Android Fragment Update TextView From AsyncTask onPostExecute
我有一個使用HttpGet從遠程服務器獲取內容的AsyncTask。 我已經測試過,並且工作正常,現在我想使用此AsyncTask的結果更新TextView。 這是我所做的。
從片段的OnCreateView中,獲得對Button和TextView的引用,首先隱藏TextView,然后在OnClickListener中找到要取消隱藏文本視圖並使用AsyncTask結果更新該文本視圖的按鈕
View rootView = inflater.inflate(R.layout.fragment_programs_list, container, false);
Button btnLoadPrograms = (Button) rootView.findViewById(R.id.btnLoadPrograms);
TextView tvShowPrograms = (TextView) rootView.findViewById(R.id.tvRestCall);
tvShowPrograms.setVisibility(View.GONE);
btnLoadPrograms.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startNewAsyncTask();
}
});
return rootView;
現在,在AsyncTask的onPostExecute中,我想更新Textview
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
getView().findViewById(R.id.tvRestCall).setVisibility(View.SHOW); //Does not exit
}
如何從Fragment中的AsyncTask中獲取對TextView的引用,然后使用doinbackground的結果更新該TextView。
嘗試使用getView().findViewById(R.id.tvRestCall).setVisibility(View.VISIBLE);
試試這個
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
tvShowPrograms.setVisibility(View.VISIBLE);
}
我同意https://stackoverflow.com/users/1113949/ksarmalkar-您可以發送對AsyncTask的引用,然后使用該引用通過mYourView.setVisibility(View.VISIBLE);
設置可見性mYourView.setVisibility(View.VISIBLE);
我最終解決了以下問題,為textView設置了一個公共屬性
public TextView tvShowPrograms;
然后在OnCreateView中,我初始化TextView並將文本設置為null
tvShowPrograms = (TextView) rootView.findViewById(R.id.tvRestCall);
tvShowPrograms.setText("");
然后在onPostExecute上,我只是將textView設置為結果。
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
tvShowPrograms.setText(result);
}
感謝您的回答,我很高興它正在工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.