0

EditText 1Button と 1TextView が 1 つあります。Edittext に URL を入力してボタンをクリックすると、textView には、edittext に URL を入力した Web サイトからの Html が表示されます。URLを使用してWebからhtmlを取得したい。

問題

このコードを ( AVD Target バージョン 2.3.3) で使用する場合。AndroidManifest (minSdkVersion="10" targetSdkVersion="10") と私も targetSdkVersion="15" を変更します) どちらも正しく動作します。しかし、(AVD ターゲット バージョン 4.0.3) で実行するように変更すると、動作しません。え?これは私のコードです

    final EditText et = (EditText) findViewById(R.id.editText1);
    final Button b = (Button) findViewById(R.id.button1);
    final TextView tv = (TextView) findViewById(R.id.textView1);

    b.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
        try {
            URL url = null;
            url = new URL(et.getText().toString());
            URLConnection conn = url.openConnection();
            BufferedReader buff = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line ="";
            while((line = buff.readLine())!= null){
                tv.append(line);

            }
        } catch (Exception e) {

        }
4

3 に答える 3

1
    //before OnCreate() method
    URL url = null;
     final TextView tv;
    ////////


     b.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
            try {
                url = new URL(et.getText().toString());

    new YourAsyncTask.execute();
                }
            } catch (Exception e) {

            }


    //after onCreate() method

     class YourAsyncTask extends AsyncTask<Void, Void, Void>
        {

            private ProgressDialog progressDialog;

            @Override
            protected void onPreExecute()
            {
                //show your dialog here
                progressDialog = ProgressDialog.show(YourActivity.this,"Please wait...", "Loading  ...", true);
            }

            @Override
            protected Void doInBackground(Void... params)
            {  


                //make your request here - it will run in a different thread
                try
                {

                URLConnection conn = url.openConnection();
                BufferedReader buff = new BufferedReader(new  InputStreamReader(conn.getInputStream()));
                String line ="";
                while((line = buff.readLine())!= null){
                    tv.append(line);




                }
                catch (Exception e)
                {
                    // TODO: handle exception
                }

                return null;
            }

            @Override
            protected void onPostExecute(Void result)
            {

                try
                {   
                    progressDialog.dismiss();
///Show your Data here

                }
                catch (Exception e)
                {
                    // TODO: handle exception

                }

            }
        }
于 2012-09-08T04:41:40.413 に答える
1

NetworkOnMainThreadExceptionHoneycomb 以降を使用している場合、UI スレッドでネットワークにアクセスできません。AsycnTask で作業を行う必要があります。詳細については、この質問を参照してください。

于 2012-09-08T03:21:00.543 に答える
0

Menifestのインターネット許可を確認してください。

于 2012-09-08T04:57:48.233 に答える