Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 执行异步任务不起作用_Android_Android Asynctask - Fatal编程技术网

Android 执行异步任务不起作用

Android 执行异步任务不起作用,android,android-asynctask,Android,Android Asynctask,当用户点击按钮时,我试图执行一个AsyncTask来更新活动中的textView。按钮操作为“openVotar”,要更新的textView为“textvaloracionempresa”。点击按钮时,不会显示异常,但会发生任何情况。显示的URL来自一个带有JSON编码函数的PHP文件,输出是来自此类型[“8”]的数组 当前代码: public void openVotar(View view) { Log.i("Response", "Hemos entrado en openVota

当用户点击按钮时,我试图执行一个AsyncTask来更新活动中的textView。按钮操作为“openVotar”,要更新的textView为“textvaloracionempresa”。点击按钮时,不会显示异常,但会发生任何情况。显示的URL来自一个带有JSON编码函数的PHP文件,输出是来自此类型[“8”]的数组

当前代码:

public void openVotar(View view)
{
    Log.i("Response", "Hemos entrado en openVotar: ");
    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR1)
          new MyAsyncTask().execute();
        else
          new MyAsyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
private class MyAsyncTask extends AsyncTask<String, Integer, Double>{

@Override
protected Double doInBackground(String... params) {
    // TODO Auto-generated method stub
    Log.i("Response", "Hemos entrado en asynctask: ");

    return null;
}

protected void onPostExecute(Double result){
    }
protected void onProgressUpdate(Integer... progress){
    pb.setProgress(progress[0]);
}

public void postData(String valueIWantToSend) {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://xxxx/cambiarvaloracionempresa.php?id="+idEmpresa
            );

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("myHttpData", valueIWantToSend));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);
        TextView txtvaloracionempresa = (TextView) findViewById(R.id.valoracionEmpresa);
        InputStream ips  = response.getEntity().getContent();
        BufferedReader buf = new BufferedReader(new InputStreamReader(ips, "UTF-8"));

        StringBuilder sb = new StringBuilder();
        String s;
        while (true) {
          s = buf.readLine();
          if ((s == null) || (s.length() == 0))
            break;
          sb.append(s);
        }

        buf.close();
        ips.close();
        Log.i("Response", "My response is: " + sb.toString());
        txtvaloracionempresa.setText(sb.toString());
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
}
public void openVotar(视图)
{
Log.i(“响应”,“开放式血液中的血液夹杂”);

如果(Build.VERSION.SDK_INT您已经向远程服务器发送了
HTTPPOST
请求,但您没有处理它返回的内容。
响应实际上不是它返回的文本,而是
HttpResponse

您需要添加如下内容:

InputStream ips  = response.getEntity().getContent();
BufferedReader buf = new BufferedReader(new InputStreamReader(ips, "UTF-8"));

StringBuilder sb = new StringBuilder();
String s;
while (true) {
  s = buf.readLine();
  if ((s == null) || (s.length() == 0))
    break;
  sb.append(s);
}

buf.close();
ips.close();
Log.i("Response", "My response is: " + sb.toString());
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR1)
  new MyAsyncTask().execute();
else
  new MyAsyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
----编辑---

AsyncTask
execute语句更改如下:

InputStream ips  = response.getEntity().getContent();
BufferedReader buf = new BufferedReader(new InputStreamReader(ips, "UTF-8"));

StringBuilder sb = new StringBuilder();
String s;
while (true) {
  s = buf.readLine();
  if ((s == null) || (s.length() == 0))
    break;
  sb.append(s);
}

buf.close();
ips.close();
Log.i("Response", "My response is: " + sb.toString());
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR1)
  new MyAsyncTask().execute();
else
  new MyAsyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

if(Build.VERSION.SDK_INT)是否显示您的toast消息?@hmartinezd,否,也不显示。由于
getApplicationContext()
。除非您完全确定自己知道自己在做什么,否则使用应用程序上下文是个坏主意。
Empresas\u SingleItemView.java
文件的第151行是什么?@nKn,它是line:postData(参数[0]);我猜openVotar中对MyAsyncTask的调用不起作用,调用该方法有什么帮助吗?您是否在应用程序中一次运行多个
AsyncTask
?在
doInBackground()中添加
Log.d(“你好”,“我在这里!”)
并检查它是否在您的
日志中显示任何内容。解决了,我只需要将min SDK设置为11,它是8,至少现在它激发:-)它可能是由所有
getApplicationContext()引起的
正如我在评论中指出的,您使用的语句是错误的,您应该使用执行
异步任务的
活动的
上下文。