我试图最终将 readMessage 字符串处理成二维数组。我确实意识到“a”现在没有增加。无论如何,当我按下按钮时 bool 不会被输出为 true。 toast 还是说假的。
更新: 当前面的其他代码不存在时,我的 toast 会输出正确的 bool 值,我正在谈论二维数组的填充。当它存在时,什么也不会发生。一分钟过去了,我还没看到 toast 。这也只有一个值!
public Button seizureResult;
public double [][]stored = new double[8000][1];
public static HjorthClass finalValue;
public int a=0;
public String transfer;
public boolean bool;
seizureResult.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v){
Complete();
Toast.makeText(getApplicationContext(), "Value =="+bool, Toast.LENGTH_LONG).show();
}
});
private class ProcessData extends AsyncTask<String, Void, Boolean>
{
@Override
protected Boolean doInBackground(String... params)
{
if(transfer == null)
{
transfer = "0";
}
double[] convert = new double[1];
for(int z=0; z <1;z++)
{
convert[z]= Double.parseDouble(transfer);
}
for(int j=0; j<1;j++)
{
stored[a][j]= convert[j];
}
bool = true;
return bool;
}
@Override
protected void onPostExecute(Boolean result)
{
Toast.makeText(getApplicationContext(), "Value =="+bool, Toast.LENGTH_LONG).show();
}
}
public void Complete()
{
ProcessData task = new ProcessData();
task.execute(transfer);
}
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
String readMessage = new String(readBuf,0,msg.arg1);
transfer = readMessage;
mConversationArrayAdapter.add("Voltage: "+ transfer);
break;
最佳答案
AsyncTask 类允许执行后台操作并在 UI 线程上发布结果,而无需操作线程和/或处理程序。
请阅读此THIS和 THIS了解“AsyncTask 的工作原理”
试试这个代码
private class ProcessData extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... params)
{
//your code here
boolean bool = true;
return bool;
}
@Override
protected void onPostExecute(Boolean result) {
Toast.makeText(getApplicationContext(), "Value =="+result, Toast.LENGTH_LONG).show();
}
}
关于java - 当背后的代码存在时,简单的异步任务按钮不输出 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22954620/