1

我从android开始,我的问题是关于这个官方教程:

http://developer.android.com/training/basics/network-ops/connecting.html

在“在单独的线程上执行网络操作”中,我在 eclipse 中有完全相同的代码,并且在 eclipse 中出现以下错误:

The type MainActivity.DownloadWebpageText must implement the inherited abstract method AsyncTask.doInBackground(Object...)

我知道要覆盖doInBackground()它必须获取一个对象作为参数,并且我期望和字符串...

我该如何解决?

我很困惑,因为这段代码在主要的 android 培训部分。

非常感谢你,圣诞快乐!

编辑:这是我的代码。与我链接的指南相同的代码:

package com.example.com.example.networkoperations;

import java.io.IOException;

import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

    final String LOG_TAG = "Connectivity tests (chux)";

    Button btn;
    TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }

    private void init() {
        btn = (Button) findViewById(R.id.button);
        btn.setOnClickListener(this);
        tv = (TextView) findViewById(R.id.textView1);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    public void onClick(View arg0) {
        tvText("Clicado!");
        ConnectivityManager connMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
        if (networkInfo != null && networkInfo.isConnected()){
            new DownloadWebpageText().execute("http://mydomain.com");
        }
        else
            tvText("No hay conexión a internet");
    }


    private void tvText(String text){
        String oldText = tv.getText().toString() + "\n";
        tv.setText(oldText + text);

    }

    private class DownloadWebpageText extends AsyncTask{
        @Override
        protected String doInBackground(String... urls) {

            // params comes from the execute() call: params[0] is the url.
            try {
                return downloadUrl(urls[0]);
            } catch (IOException e) {
                return "Unable to retrieve web page. URL may be invalid.";
            }
        }
        // onPostExecute displays the results of the AsyncTask.
        @Override
        protected void onPostExecute(String result) {
            tv.setText(result);
       }

    }

}
4

1 回答 1

2

更改下载的you类减速

 private class DownloadWebpageText extends AsyncTask{
}

像是

    private class DownloadWebpageText extends AsyncTask<String,Void,String>{
}
于 2012-12-28T10:14:26.903 回答