この素敵なコード スニペットを見つけました: Android, Make an image at a URL equal to ImageView's image
私が作成しようとしている小さな「スクリーンスライダー」アプリに実装しようとしました。ビットマップを作成しようとすると、同じスレッドでネットワーク呼び出しを行うことができないという例外がスローされます。次に、イメージビューを埋めるために新しいスレッドを作成しようとしましたが、ビュー階層を作成した元のスレッドのみがそのビューにアクセスできると表示されます。
次はどこへ向かえばいいのかわからない。これは Fragment を拡張するクラス内にあるため、ViewGroup への「直接アクセス」はありません。
これは、新しいスレッドのコードです。
public class MyThread implements Runnable {
ViewGroup vg;
public MyThread(ViewGroup parameter) {
this.vg = parameter;
}
public void run() {
try {
Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL("http://static.adzerk.net/Advertisers/11239ce559004d9a8e16fe2790630628.png").getContent());
ImageView i = (ImageView)vg.findViewById(R.id.image);
i.setImageBitmap(bitmap);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout containing a title and body text.
ViewGroup rootView = (ViewGroup) inflater
.inflate(R.layout.fragment_screen_slide_page, container, false);
// Set the title view to show the page number.
((TextView) rootView.findViewById(android.R.id.text1)).setText(
getString(R.string.title_template_step, mPageNumber + 1));
Runnable r = new MyThread(rootView);
new Thread(r).start();
return rootView;
}
そのビットマップオブジェクトを新しいスレッドで埋めてから、UIスレッドに戻してイメージビューを埋める方法について、誰かが提案できますか?
ティア。