【发布时间】:2020-06-10 04:03:13
【问题描述】:
我写了一个程序,它使用互联网访问并发出 https 请求。所以我不得不使用 AsyncTask 来做请求部分。我的问题是,在我的主要活动中,我有一个函数可以在每次发出 https 请求后增加一个微调器。在我的 backgroundTask(这是我的 AsyncTask 类)中,我包含了一个名为 :resultTest 的静态整数,它对每个生成的异常进行编号。我只想传递一个值(0/1 或真/假),具体取决于与我的主线程的连接是否成功。这个将被传递的值将决定我是否应该增加微调器。
这是我的 backgroundTask 的 OnPostExecute 部分,只是为了让您了解它是如何工作的:
@Override
protected void onPostExecute(String result) {
//this method will be running on UI thread
pdLoading.dismiss();
if (resultTest == 0) {
Toast.makeText(ctx,"Successfully Recorded",Toast.LENGTH_LONG).show();
}
else{
String msg = "";
switch(resultTest){
case 1:msg = "Internal App Error";
case 2:msg="Server Problem";
case 3:msg="Server Returned Error";
case 4:msg="Connection Problem";
}
Toast.makeText(ctx,msg,Toast.LENGTH_LONG).show();
}
}
这是我在主线程中实例化 BackgroundTask 和取决于返回值的事件的部分:
BackgroundTaskWater backgroundTaskWater = new BackgroundTaskWater(getActivity());
backgroundTaskWater.execute(field, val);
// FIX THIS INCREMENT
if(code == 0) {
meterItemIncrement(meters);
screen.setText("");
}
如何将backgroundTask中的变量resultTest的值传递给主线程中的变量code?p>
我尝试使用静态方法和 getter 函数但失败了。该值未通过 我什至尝试将主线程中的变量代码更改为公共静态并从 backgroundTask 传递值,但是当 backgroundTask 被破坏时,值会重置。该值未通过。
任何想法或建议将不胜感激!
【问题讨论】:
标签: java android android-activity android-asynctask