我有一个使用HttpGet从远程服务器获取内容的AsyncTask。我已经测试过,这工作正常,现在我想用这个AsyncTask的结果更新TextView。这就是我所做的。
从片段的OnCreateView,我得到一个Button和一个TextView的引用,我最初隐藏了TextView,然后在OnClickListener中为我想要取消隐藏textview的按钮,并用我的AsyncTask的结果更新该textview < / p>
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
}
如何从片段中的AsyncTask中获取对TextView的引用,然后使用doinbackground的结果更新TextView。
答案 0 :(得分:1)
尝试使用getView().findViewById(R.id.tvRestCall).setVisibility(View.VISIBLE);
答案 1 :(得分:1)
试试这种方式,
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
tvShowPrograms.setVisibility(View.VISIBLE);
}
答案 2 :(得分:1)
我同意https://stackoverflow.com/users/1113949/ksarmalkar - 您可以发送对AsyncTask的引用,然后使用此引用按mYourView.setVisibility(View.VISIBLE);
答案 3 :(得分:0)
我最终解决了这个问题如下 为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);
}
感谢您的回答,我很高兴它正在运作