1

私はアンドロイドから始めています。私の質問はこの公式チュートリアルに関するものです:

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

からのダウンロードのあなたクラスの減速を変更します

 private class DownloadWebpageText extends AsyncTask{
}

のようになる

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