簡體   English   中英

Android片段從AsyncTask onPostExecute更新TextView

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM