2017-04-05 7 views
-1

setOnClickListenerで画像をダウンロードするために別のクラスのメソッドにURLを渡していますが、アプリを起動した後、しかし、イメージはダウンロードされていません)しかし、2回目のクリックから完全に動作しています。ここでAndroidのsetOnClickListenerは、アプリケーションの起動後に初めてクリックすると動作しません。

は私のコードです:ここでは

downloadimg.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      String[] urls = new String[50]; 
      for (int i = 0; i < images.size(); i++) { 
       urls[i] = images.get(i).getLarge(); 

      } 
      DownloadImages downloadImages= new DownloadImages(); 
      downloadImages.downloadImage(getActivity(),urls, images.get(0).getName()); 
      Toast.makeText(getActivity(), "Download Completed", Toast.LENGTH_SHORT).show(); 

      getActivity().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 
      Log.i("TAG", "scanning File jbdv"); 


     } 
    }); 

が完了DownloadImagesクラスです

public class DownloadImages extends AppCompatActivity { 

public void downloadImage(final Context ctx, String[]imgloc, final String folder) { 

    for (int i = 0; i < imgloc.length; i++) { 

     Picasso.with(ctx) 
       .load(imgloc[i]) 
       .into(new Target() { 
          @Override 
          public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
           try { 
            String root = Environment.getExternalStorageDirectory().toString(); 
            File myDir = new File(root + "/~" +folder); 

            if (!myDir.exists()) { 
             myDir.mkdirs(); 
            } 

            String name = new Date().getTime() + ".jpg"; 
            myDir = new File(myDir, name); 
            FileOutputStream out = new FileOutputStream(myDir); 
            bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 

            out.flush(); 
            out.close(); 
            Log.i("TAG", "scanning File " +myDir.getAbsolutePath()); 
           } catch (Exception e) { 
            // some action 
           } 

          } 


          @Override 
          public void onBitmapFailed(Drawable errorDrawable) { 
          } 

          @Override 
          public void onPrepareLoad(Drawable placeHolderDrawable) { 
          } 
         } 
       ); 


    } 

} 

}

+1

ここにすべてのコードを入力してください –

+0

この関数の本文を投稿するdownloadimage(....){} –

+0

AsyncTaskを使用していますか?もしそうなら、それはまだダウンロード中であるかもしれません - いくつかの進捗状況ダイアログを表示し、ロードされているかどうかを確認します。あなたのコードから、私はそれが50イメージをダウンロードすることがわかりますか?それはかなり多く、それはすぐに終わらないかもしれません。 –

答えて

0

コードONSTARTで()メソッド

との高速アクセスのために入れてイメージはバックグラウンドで行います

関連する問題