0

まさにタイトル通り。フラグメント内の URl から imageView を表示しようとしていますが、何も表示されません。Android はクラッシュせず、レイアウトは空です。マニフェストでインターネット アクセス許可を有効にしています。

<uses-permission android:name="android.permission.INTERNET" />

Javaコードはこちら

public class InboxFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
  Bundle savedInstanceState) {

View V = inflater.inflate(R.layout.inbox_frag_layout, container, false);
ImageView image = (ImageView)V.findViewById(R.id.imgView);
Drawable drw =LoadImageFromWebOperations("http://i.imgur.com/Svphn.jpg");
image.setImageDrawable(drw);

return V;

}

private Drawable LoadImageFromWebOperations(String strPhotoUrl) {
try {
  InputStream is = (InputStream) new URL(strPhotoUrl).getContent();
  Drawable d = Drawable.createFromStream(is, "src name");
  return d; 
}catch (Exception e) { 
  System.out.println("Exc="+e); 
  return null;
}

}
}

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width = "wrap_content" 
    android:layout_height="wrap_content" 
    >
 <ImageView
    android:id="@+id/imgView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"/>
</LinearLayout>

更新: 代わりに webview を使用して修正しました。

4

3 に答える 3

1

私は問題を疑っていますが、解決策を知りませんが、共有したいと思っています。すべてのネットワーク呼び出しの実行には時間がかかります。この時間は、1 行のコード ステートメントを実行する CPU 速度よりも常に大きくなります。そのため、LoadImageFromWebOperations() 関数を呼び出すときに、ネットからドローアブルがリアルタイムで取得されるとは思わないでください。LoadImageFromWebOperations() 関数が実行されて応答が返されるとすぐに、onCreateView() 関数はすでに実行を終了し、imageView に画像を設定せずにビューを返します。

可能な解決策は次のとおりです。画像を設定せずにビューを返します。ダウンロードしたらネットから画像がダウンロードされるのを待ってから、フラグメントの現在のビューを取得し(方法がわからない)、その上に画像を設定します。

フラグメントの現在のビューを取得する方法について、誰かが解決策を提供してくれることを期待しています。

于 2012-11-23T13:08:12.323 に答える
0

http://code.google.com/p/android-query/で AQuery ライブラリを使用すると、作業が楽になります。

ライブラリを使用すると、URL から 1 行でイメージビューを設定できます。

aq.id(R.id.image1).image("http://www.vikispot.com/z/images/vikispot/android-w.png");

追加のコードなしでダウンロードを処理するので、これをお勧めします。また、非同期で実行されるため、UI スレッドがブロックされず、ユーザーの速度が低下しません。

于 2012-04-22T18:33:10.227 に答える
0

以下のコードを使用して、url::: からビットマップを取得できます。

URL newurl = new URL(streamURL); 
HttpGet httpRequest = null;
try  {
    httpRequest = new HttpGet(newurl.toURI());
} catch (URISyntaxException e) {
    e.printStackTrace();
}
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
InputStream instream = bufHttpEntity.getContent();
Bitmap mIcon_val = BitmapFactory.decodeStream(instream);
于 2012-04-22T06:55:59.627 に答える