将drawable应用于另一个Activity Layout中的ImageView

时间:2012-06-08 11:25:10

标签: java android

使用this库,我正在尝试检索已编辑的图像并将其放在另一个活动的ImageView上...

调用函数将已编辑的drawable设置为另一个ImageView:

Log.d("eiDR",gImageView.getDrawable().toString());
PreviewPostal pp = new PreviewPostal();
pp.setImage(gImageView.getDrawable());

将已编辑的drawable设置为另一个ImageView(在PreviewPostal活动中):

public void setImage(Drawable dr){
    Log.d("ppDR",dr.toString());
    //ImageView iv = (ImageView)this.findViewById(R.id.imageForTest);
    //iv.setImageDrawable(dr);
}

这会记录相同的drawable,但如果我取消注释这两行,它会给我一个NPE。

注意:活动包含在TabHost中(每个活动都是带有自己布局的选项卡)。

提前致谢!

编辑:我如何添加活动(标签):

mTabHost = getTabHost();

// Tab Editar Imagem
TabSpec editImageSpec = mTabHost.newTabSpec("Imagem");
editImageSpec.setIndicator(setTabIndicator(getResources().getDrawable(R.drawable.tab_editimage_icon)));
Intent editImageIntent = new Intent(this, EditImage.class);
editImageIntent.putExtra("imagem", getIntent().getStringExtra("imagem"));
editImageSpec.setContent(editImageIntent);

2 个答案:

答案 0 :(得分:1)

你不能简单地这样做。首先让我解释一下这条线的含义。

ImageView iv = (ImageView)this.findViewById(R.id.imageForTest);

这只是意味着,您正在尝试引用当前活动中存在的元素。也就是说,您可以使用 setContentView 提供的布局。所以现在当android在当前布局中搜索这个ImageView时,显然它不会存在并且会抛出空指针异常

您实际需要做的是,通过某种方式保存Drawable,稍后当您传递给该活动时,您必须将Drawable设置为ImaegView。

请参阅此链接,了解如何将Drawable转换为位图并使用putExtra将其发送到下一个活动。

https://stackoverflow.com/a/9033864/603744

答案 1 :(得分:1)

选项:

1.您可以启动活动以获得结果和被调用活动的结果,只需将drawable的byte []返回给调用活动

2.在SD卡上有一个预定位置,然后在该位置保存来自被叫活动的图像并从呼叫活动访问相同位置

3.编写一个实现 serializable 的简单pojo。然后为结果启动第二个活动,并在第二个活动的结果上填充pojo并将其从被调用的活动返回到调用活动。

我希望这有帮助..