2

Webビューに画像を表示しようとしていますが、Webビューが読み込まれるアクティビティに到達するとすぐにアプリがクラッシュします。

    WebView myWebView = (WebView) findViewById(R.id.webView1);
    myWebView.getSettings().setJavaScriptEnabled(true);
 //   myWebView.getSettings().setBuiltInZoomControls(true);
 //   myWebView.getSettings().setSupportZoom(true);
    myWebView.loadUrl("http://www.de-saksen.nl/2/images/comprofiler/62_4dc3051f2b262.jpg");
 //     myWebView.loadData(
 //            "<img src='http://www.de-saksen.nl/2/images/comprofiler/62_4dc3051f2b262.jpg'>",
 //            "text/html", "UTF-8");

私はコードに少し戸惑っていましたが、何も役に立ちません。

アクティビティはManifest.xmlにあり、インターネット許可を許可します。

編集:すべてのawnsersを読むと、多くの助けになり、新しいアクティビティ内にコードを配置すると画像が読み込まれることに気付きましたが、これに読み込むことができる必要があります:

public class Profileviewer extends ListActivity {


/** Called when the activity is first created. */

 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);


    setContentView(R.layout.listplaceholder);


    ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();


    JSONObject json = JSONfunctions.getJSONfromURL("http://de-saksen.nl/deelnemers.txt");



    try{

        JSONArray  deelnemers = json.getJSONArray("deelnemers");

        int Key = getIntent().getIntExtra("Key", -1);

            { HashMap<String, String> map = new HashMap<String, String>();  
            JSONObject e = deelnemers.getJSONObject(Key);

            map.put("id",  String.valueOf(Key));
            map.put("name", "Naam: " +  e.getString("naamingw2"));
            map.put("sex", "Geslacht: " +  e.getString("geslacht"));
            map.put("rank", "Rang: " +  e.getString("rang"));
            map.put("race", "Ras: " +  e.getString("ras"));
            map.put("profession", "Beroep: " +  e.getString("beroep"));
            map.put("skills", "Hobby's: " +  e.getString("hobbys"));
            map.put("lvl", "Level: " +  e.getString("level"));
            map.put("avatar", e.getString("avatar"));
            mylist.add(map);            
        }   



    }catch(JSONException e)        {
         Log.e("log_tag", "Error parsing data "+e.toString());
    }

    ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.profile, 
                    new String[] { "name", "sex", "rank", "race", "profession", "skills", "lvl" }, 
                    new int[] { R.id.item_title, R.id.item_subtitle, R.id.item_subtitle2, R.id.item_subtitle3, R.id.item_subtitle4, R.id.item_subtitle5, R.id.item_subtitle6 });

    setListAdapter(adapter);




    final ListView lv = getListView();
    lv.setTextFilterEnabled(true);  
    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {              
            Intent intent = new Intent(Profileviewer.this, Listviewer.class);   
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
            startActivity(intent); 
        }
    });



}
}

このアクティビティでは、現在選択されているユーザーがいるためです。

4

4 に答える 4

2

これを使って

byte[] imageRaw = null;
try {
 URL url = new URL("http://some.domain.tld/somePicture.jpg");
 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

 InputStream in = new BufferedInputStream(urlConnection.getInputStream());
 ByteArrayOutputStream out = new ByteArrayOutputStream();

 int c;
 while ((c = in.read()) != -1) {
     out.write(c);
 }
 out.flush();

 imageRaw = out.toByteArray();

 urlConnection.disconnect();
 in.close();
 out.close();
 } catch (IOException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }

  String image64 = Base64.encodeToString(imageRaw, Base64.DEFAULT);

  String urlStr   = "http://example.com/my.jpg";
  String mimeType = "text/html";
  String encoding = null;
  String pageData = "<img src=\"data:image/jpeg;base64," + image64 + "\" />";

  WebView wv;
  wv = (WebView) findViewById(R.id.webview);
  wv.loadDataWithBaseURL(urlStr, pageData, mimeType, encoding, urlStr);
于 2012-07-30T12:25:30.183 に答える
1
 public class WebviewActivity extends Activity {         
           public void onCreate(Bundle savedInstanceState) {
                   super.onCreate(savedInstanceState);        
           setContentView(R.layout.main);        

     WebView wv = (WebView) findViewById(R.id.webview1);        
           WebSettings webSettings = wv.getSettings();        
           webSettings.setBuiltInZoomControls(true);        
           wv.loadUrl("http://ecx.images-amazon.com/images/I/41HGB-W2Z8L._SL500_AA300_.jpg");

     }    

}

xml

<?xml version="1.0" encoding="utf-8" ?> 
  <LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"   
android:layout_width="fill_parent" 
android:layout_height="fill_parent"   
android:orientation="vertical">
  <WebView 
    android:id="@+id/webview1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 
 </LinearLayout>
于 2012-07-30T12:27:26.960 に答える
0

そのコードをエミュレーターで実行したところ、うまく機能しました。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

</LinearLayout>

Android3.2AsyncTasksを起動する必要はありません。

于 2012-07-30T12:22:51.657 に答える
0
 public class WebviewActivity extends Activity {     
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);        

  WebView wv = (WebView) findViewById(R.id.webview1);   
    WebSettings webSettings = wv.getSettings(); 
    webSettings.setBuiltInZoomControls(true);   
    wv.loadUrl("http://ecx.images-amazon.com/images/I/41HGB-W2Z8L._SL500_AA300_.jpg");

  }    

 }
于 2012-07-30T12:24:01.410 に答える