2010-08-23 36 views
2

我想出了如何在活动之间传递一个字符串值,这要感谢这个网站,但是我在传递图像时遇到了问题。我想要的是有一个用户点击一个按钮,打开画廊,并允许选择一张图片。然后我有另一个按钮打开另一个显示ImageView的活动。我希望能够将ImageView的图像作为以前活动中的选定图像。将图像传递给另一个活动

这里是有我点击打开库和检索所选择的图像按钮类:

public class EnterEdit extends Activity implements View.OnClickListener 
{ 
private static final int SELECT_IMAGE = 0; 

String filepath; 

Bundle fieldresults; 
Intent b; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.enteredit); 

    Button selectwallpaper = (Button) findViewById(R.id.selectwallpaper); 
    selectwallpaper.setOnClickListener(this); 

    Button previewwallpaper = (Button) findViewById(R.id.previewwallpaper); 
    previewwallpaper.setOnClickListener(this); 

    fieldresults = new Bundle(); 
    b = new Intent(this, PreviewScreen.class); 
} 


@Override 
public void onClick(View view) 
{ 
    switch (view.getId()) 
    { 
    case R.id.selectwallpaper: 
    Intent gallery = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI); 
    startActivityForResult(gallery, SELECT_IMAGE); 
    break; 

    case R.id.previewwallpaper: 
    startActivity(b); 
    } 
    break; 
    } 


protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 

    if (resultCode == RESULT_OK) 
    { 
    if (requestCode == SELECT_IMAGE) 
    { 
    Uri selectedimage = data.getData(); 
    String[] filepathcolumn = {MediaStore.Images.Media.DATA}; 

    Cursor cursor = getContentResolver().query(selectedimage, filepathcolumn, null, null, null); 
    cursor.moveToFirst(); 

    int columnindex = cursor.getColumnIndex(filepathcolumn[0]); 
    filepath = cursor.getString(columnindex); 
    cursor.close(); 

    fieldresults.putString("bitmap", filepath); 
    b.putExtras(fieldresults); 
    } 
    } 
} 
} 

这里是应该显示选择的图像类:

public class PreviewScreen extends Activity implements View.OnClickListener 
{ 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.previewscreen); 

    Bundle fieldresults = this.getIntent().getExtras(); 
    String backgroundpath = fieldresults.getString("bitmap"); 

    String background = BitmapFactory.decodeFile(backgroundpath); 
    ImageView gallerypic = (ImageView) findViewById(R.id.gallerypic); 
    gallerypic.setImageBitmap(background); 
} 
} 

我不确定的是在OnActivityResult如果我应该通过selectedImageb.putExtra("bitmap", selectedimage);行中选择的图像。我尝试了两种,但是我没有看到第二项活动的图像。如果我正确设置了图像视图,我也不确定在PreviewScreen课程中。任何帮助表示赞赏。谢谢。

回答

2

相信我,你不想在活动之间传递图像。相反,为什么不简单地传递图像的路径,并让第二个活动决定如何处理该路径(在本例中为解码和显示图像)。

+0

所以我通过“文件路径”变量(行 String filepath = cursor.getString(columnindex)) – joelreeves 2010-08-23 04:16:05

+0

是的......然后,你解码活动B中的图像。你知道知道怎么做:) – Cristian 2010-08-23 05:05:49

+0

好的,我做了一些编辑,但ImageView在第二个活动中仍然是空白的。我是否正确地在第一课中传递它,并在第二课中正确引用它?感谢你目前的帮助。 – joelreeves 2010-08-23 05:56:41

相关问题