0

Web サイトからテキストを読み取り、そのテキストを変数に保存し、そのテキストを別のアクティビティに表示しようとしている小さなアプリケーションに取り組んでいます。私の主なアクティビティには、「ライセンス契約」と呼ばれるクリック可能なラベルがあり、クリックすると、アプリはサイトからテキストを読み取り、別のアクティビティに移動して、そのテキストをユーザーに表示する必要があります。ただし、ラベルをクリックするたびに、アプリが強制終了します。助言がありますか?

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;


import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void activity_license(View view) throws IOException{


        String stringBuffer;
        String text ="";

        URL url = new URL("http://something.something.com/LICENSE");

        BufferedReader bufferReader = new BufferedReader(new InputStreamReader(url.openStream()));

        while((stringBuffer = bufferReader.readLine()) != null){
            text += stringBuffer;
        }

        bufferReader.close();

        Intent licenseIntent = new Intent(this, LicenseActivity.class);
        licenseIntent.putExtra("LICENSE_AGREEMENT", text);
        startActivity(licenseIntent);
    }
}

そして、ここにテキストを表示したい 2 番目のアクティビティ コードがあります...

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

public class LicenseActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_license);

        Intent intent = getIntent();

        String licenseText = intent.getStringExtra("LICENSE_AGREEMENT");

        TextView lblText = (TextView)findViewById(R.id.lblLicense);
        lblText.setText(licenseText);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_license, menu);
        return true;
    }
}
4

2 に答える 2

0
// RETRIVE YOUR RESPONSE 
    try 
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) 
        {
            sb.append(line + "\n");
        }
        is.close();
        result = sb.toString();
    }
    catch (Exception e) 
    {   
        Log.e("Loading Runnable Error converting result :", e.toString());
    }

この結果を文字列として出力します。

于 2012-11-01T05:41:58.843 に答える
0

これを試して

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(URL);

HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();

InputStream is = httpEntity.getContent();
StringBuilder text = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = br.readLine()) != null) {
    text.append(line + "\n");
}

try 
    intent.putExtra("licence",text.toString);

これが機能しない場合は、 HttpPostの代わりにHttpGetを試してください......

于 2012-11-01T05:56:02.287 に答える