2013-07-17 36 views
0

我在我的android應用程序中有一個尋呼機活動我需要根據在尋呼機中的位置保存圖像。我設法做了保存部分,但是當我在第一個圖像我點擊保存它保存第二個圖像相同的第二個圖像它保存第三我不知道我的代碼是怎麼回事! `從android分頁器保存圖像到sd卡

enter code here 

public boolean onOptionsItemSelected(MenuItem item) 
{ 
    // Handle item selection 
    if (item.getItemId()==R.id.menuFinale) 
    { 

     ImageView imageView = (ImageView) findViewById(R.id.image_one); 
     imageView.setDrawingCacheEnabled(true); 
     Bitmap bitmap = imageView.getDrawingCache(); 
     File root = Environment.getExternalStorageDirectory(); 
     MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, "My pic" ,"Saved to gallery"); 
     File file = new File(root.getAbsolutePath()+"/DCIM/Camera/img.jpg"); 
     try 
     { 
      file.createNewFile(); 
      FileOutputStream ostream = new FileOutputStream(file); 
      bitmap.compress(CompressFormat.JPEG, 100, ostream); 
      ostream.close(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 



     return true; 
    } 
     else { 
       return super.onOptionsItemSelected(item); 
      } 
    } 
+0

我的朋友即時通訊新的android我用我的應用程序中的代碼,它工作正常 – androidqq6

+0

你用它在pagerView? –

+0

沒有與畫廊視圖 – androidqq6

回答

0

我終於設法解決我指的是緩存中的ImageView我必須改爲參考ViewPager緩存所有包括ImageView的,而不是在這裏我的問題,而不是是我的新代碼

enter code here 

public boolean onOptionsItemSelected(MenuItem item) 
{ 
    // Handle item selection 
    if (item.getItemId()==R.id.menuFinale) 
    { 


     pager.setDrawingCacheEnabled(true); 

     pager.buildDrawingCache(true); 
     pager.setDrawingCacheEnabled(true); 

     Bitmap b = pager.getDrawingCache(true); 
     File root = Environment.getExternalStorageDirectory(); 
     MediaStore.Images.Media.insertImage(getContentResolver(), b, "My pic" ,"Saved to gallery"); 
     File file = new File(root.getAbsolutePath()+"/DCIM/HD.jpg"); 
     try 
     { 
      file.createNewFile(); 
      FileOutputStream ostream = new FileOutputStream(file); 
      b.compress(CompressFormat.JPEG, 100, ostream); 
      ostream.close(); 

     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return true; 
    } 
     else 
      { 
       return super.onOptionsItemSelected(item); 
      }  

}

0

嘗試如下一些事情:

button=(Button)vi.findViewById(R.id.button_save); 

     button.setOnClickListener(new OnClickListener() { 

    private Bitmap bm; 
    private String PREFS_NAME; 
public void onClick(View arg0) { 
    String root = Environment.getExternalStorageDirectory().toString(); 
     File myDir = new File(root + "/saved_images"); 
     if(!myDir.exists()){ 
      myDir.mkdirs();} 
     bm = BitmapFactory.decodeResource(mContext.getResources(), images[itemPos]); 
     holder.image.setImageBitmap(bm); 
     SharedPreferences savedNumber = mContext.getSharedPreferences(PREFS_NAME, 0); 
     int lastSavedNumber = savedNumber.getInt("lastsavednumber",0); 
     lastSavedNumber++; 
     String fname = "Image-"+lastSavedNumber+".png"; 

     File file = new File (myDir, fname); 
     if (file.exists()) {file.delete(); } 
     try { 
     FileOutputStream out = new FileOutputStream(file); 
     bm.compress(Bitmap.CompressFormat.PNG, 100, out);//Your Bitmap from the resouce 
     out.flush(); 
     out.close(); } 
     catch (Exception e) { 
     e.printStackTrace(); 
     } 

     SharedPreferences saveNumber = mContext.getApplicationContext().getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editorset = saveNumber.edit(); 
     editorset.putInt("lastsavednumber",lastSavedNumber); 
     editorset.commit(); 
      Toast.makeText(mContext, "saved", Toast.LENGTH_SHORT). show();}}); 

希望幫助你。

+0

我沒有兄弟但感謝似乎它給我錯誤,而運行 –

+0

問題是與我的代碼中的getDrawingCache()它沒有得到正確的圖像它得到的第二個圖像,而不是最新錯誤,在我的代碼? –