2011-07-31 4 views
0

URLからロードしてイメージするhereから借りたクラスがあります。私はonClickListenerから呼び出すことによってクラスを使用しようとしています(それが意味をなさない場合)。しかし、クラスを呼び出して結果を表示する方法がわかりません。今は静的URLで作業していますが、最終的には動的です。 MainActivity JavaでonClickListenerを使用してイメージをロードする

OnclickListerner:

list.setOnItemClickListener(new OnItemClickListener() { 

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){ 
     showImage go = new showImage(); 
    } 

}); 

、これが私のshowImageクラスです:

package com.flash_tattoo; 

public class showImage extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fullimage); 

     ImageView imgView =(ImageView)findViewById(R.id.ImageView01); 
     String url = null; 
     Drawable drawable = LoadImageFromWebOperations("http://www.androidpeople.com/wp-content/uploads/2010/03/android.png"); 
     imgView.setImageDrawable(drawable); 

    } 

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

は、私は新しいレイアウトを呼び出し、それに私のshowImageオブジェクトを添付する必要がありますか?どんな助けも素晴らしいだろう。前もって感謝します。

答えて

0

に最初のポイントを使用する必要があるUIスレッドから画像を設定したい場合は、Javaの命名規則は、クラス名を大文字にしていることに、注意してください、これは誰もが瞬時に何か知っているようにコードを読み込むことができます。 showImageクラスの名前を変更してください。

第2に、UIスレッドで長時間実行される操作が発生します。これは、AsyncTask - この記事のPainless Threadingを参照してください。 - またはハンドラを持つ新しいスレッドを使用するのが最適です。 UIスレッドで長時間実行される操作は、入力ハンドライベントが適時に処理されるのをブロックし、アプリケーションの応答が遅くなる可能性があります(特に、モバイル接続が遅い)。プログレスバーを追加するか、またはアプリケーションが待機中に何かをやっていることをユーザーに知らせるいくつかの方法を検討してください。

元の質問に答えるには、showImageActivityです。これは、リスナー内で新しいshowImageオブジェクトを作成する必要はなく、Intentをオフにして、Activityを表示することを意味します。あなたが正しいレイアウトファイルを持っているとすれば、ここではうまくいかないものは見当たりません。

また、未使用の変数があるようですが、String url = null;は不要です。

編集:実際にSystem.out.println()を使用するべきではありませんが、望ましい結果が得られます。 Androidにログインする標準的な方法は、LogCatシステムを使用することです。

suriが言及したように、画像を表示するために全く新しいものを持っている必要はありません。ActivityshowImageクラスファンクションを最初のActivityに移動し、ImageViewを最初のレイアウトに追加すると、ボタンと同じActivityのイメージをロードできます。

+0

infoIさんに感謝します。私のshowImageクラスをMainActivityに移動し、画像ビューを追加します。 +1 – Denoteone

0

可能なソリューションの1つ: 1)イメージをダウンロードするためのAsyncTaskを作成します。 2)ダウンロード結果の通知にコールバックを使用する。 3)コールバックでイメージを設定します。

あなたがいないあなたがrunOnUiThread

1

新しいレイアウトを呼び出す必要はありません。ワンボタンとImageViewをレイアウトに配置し、イメージを設定したとおりに設定することができます。あなたのコード作業は正しくチェックされています。あなたがAndroidManifiestファイルでPermissionを与えてくれたらと思います。

関連する問題