【问题标题】:How to update a TextView from within onPostExecute如何从 onPostExecute 中更新 TextView
【发布时间】:2015-12-13 06:06:19
【问题描述】:

在这里需要帮助,关于 onPostExecute。如果我想在 textView 上进行更新,代码应该是什么,我应该怎么做?。

@Override
protected Value[] doInBackground(Integer... params) {
    ApiClient apiClient = new ApiClient(API_KEY);
    Variable batteryLevel = apiClient.getVariable(VARIABLE_ID);
    Value[] variableValues = batteryLevel.getValues();

    return variableValues;
}

@Override
protected void onPostExecute(Value[] variableValues) {
    // Update your views here
}

【问题讨论】:

  • onPostExecute 从主/UI 线程运行,因此您可以像往常一样更新您的 UI 元素。
  • 要么在 asyncTask 构造函数中传递视图引用,然后从 onpostExecute() 访问它们,要么使视图引用全局,以便 onPostexecute() 可以访问它们
  • 谢谢各位。如果我想从云端获取数据并且想在 textView 上更新它。我该怎么办? ^_^

标签: android android-asynctask textview


【解决方案1】:

如下操作,将TextView的引用保存为成员,并在嵌套的AsyncTask中使用:

public class YourActivity extends Activity{

    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_activity_layout);
        textView = (TextView)findViewById(R.id.yourTextViewID);
    ...
    }

    private YourAsyncTask extends AsyncTask{
    ...
        @Override
        protected void onPostExecute(Value[] variableValues) {
            if(textView != null)
                textView.setText("your text");

         }
    }
}

【讨论】:

【解决方案2】:

如果你想从 Ubidots 获取最后一个值到你的文本视图。你可以试试这个,但你必须先设置文本视图 OnCreate

@Override
        protected void onPostExecute(Value[] variableValues) {
            // Update your views here

            String status = Double.toString(variableValues[0].getValue());
//this is textview for show last value from ubidots
            mBatteryStatus.setText(status);

        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多