2013-07-17 33 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()它没有得到正确的图像它得到的第二个图像,而不是最新错误,在我的代码? –