Android片段更新TextView来自AsyncTask onPostExecute

时间:2014-07-16 17:08:56

标签: android android-fragments android-asynctask

我有一个使用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。

4 个答案:

答案 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);
        }

感谢您的回答,我很高兴它正在运作