0

Asynctask メソッドを使用して Web サーバーからデータを取得しようとしています。

次のコードがあります。

package com.example.myfirstapp;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class FetchData extends Activity {
private TextView textView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fetch_data);
    textView = (TextView) findViewById(R.id.TextView1);


    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
}

    private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... urls) {
          String response = "";
          for (String url : urls) {
            DefaultHttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);
            try {
              HttpResponse execute = client.execute(httpGet);
              InputStream content = execute.getEntity().getContent();

              BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
              String s = "";
              while ((s = buffer.readLine()) != null) {
                response += s;
              }

            } catch (Exception e) {
              e.printStackTrace();
            }
          }
          return response;
        }

        @Override
        protected void onPostExecute(String result) {
          textView.setText(result);
        }
      }

      public void readWebpage(View view) {
        DownloadWebPageTask task = new DownloadWebPageTask();
        task.execute(new String[] {message});

}



}

私の問題は、この FetchData アクティビティが MainActivity からデータを受信する必要があることです。私はそうするために意図を使用しました。ここで使用しているインテントには、MainActivity からのデータがあります。このメッセージには、Web サーバーの URL が含まれています。メッセージを使用して、Web ページから結果を取得するだけです。このメッセージを task.execute メソッドに渡して、Web ページが返されるようにします。どうすればいいですか?

4

2 に答える 2

1

readWebpageメソッド呼び出し以外に必要なものはすべて揃っているようです。

  1. のパラメーターを変更readWebpageして、メッセージを渡します。

    public void readWebpage(String message) {
      DownloadWebPageTask task = new DownloadWebPageTask();
      task.execute(new String[] {message});
    }
    
  2. readWebpageの最後の行としての呼び出しを追加しonCreateます。

    ...
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    readWebpage( message );
    
于 2012-11-30T08:01:53.210 に答える
0
mWebView.setWebViewClient(new WebViewClient() {
        private int       webViewPreviousState;
        private final int PAGE_STARTED    = 0x1;
        private final int PAGE_REDIRECTED = 0x2;

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) {
            webViewPreviousState = PAGE_REDIRECTED;
            mWebView.loadUrl(urlNewString);
            return true;
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            webViewPreviousState = PAGE_STARTED;
            if (dialog == null || !dialog.isShowing())
                dialog = ProgressDialog.show(WebViewActivity.this, "", getString(R.string.loadingMessege), true, true,
                        new OnCancelListener() {

                            @Override
                            public void onCancel(DialogInterface dialog) {
                                // do something
                            }
                        });
        }

        @Override
        public void onPageFinished(WebView view, String url) {

            if (webViewPreviousState == PAGE_STARTED) {
                dialog.dismiss();
                dialog = null;
            }

        }
 });
于 2012-11-30T08:12:17.257 に答える