最新消息:文章中包含代码时,请遵守代码高亮规范!

Activity获取Dialog的返回值

Android Robin 28851浏览 0评论

做手写签名的时候,有个需求就是弹出一个Dialog,并在Dialog里面手写签名,然后点击确定,Dialog销毁,把写好的图片传到对应的Activity上进行显示,原理就是重写Dialog进行手写操作,问题是写好之后的图片如何才能传到Activity上。

如下图所示

 

device-2014-07-09-090030

Dialog是运行在Activity上的,它并非一个单独的Activity,所以用startActivityForResult是行不通的。

通过查找相关资料得到一个方法:

1.写一个接口类,参数就是要传的值的类型,这里手写签名传的是一个Bitmap的图片对象,所以用了Object类型,如下:


public interface DialogListener {

public void refreshActivity(Object object);

}

2.重写Dialog的时候,在构造方法中传入这个接口的实现类

</pre>
public class WritePadDialog extends Dialog {

Context context;
LayoutParams p ;
DialogListener dialogListener;

public WritePadDialog(Context context,DialogListener dialogListener) {
super(context);
this.context = context;
this.dialogListener = dialogListener;
}

3.在需要传值的时候,调用接口里面的方法

   public void onClick(View v) {
    try {
     dialogListener.refreshActivity(mView.getCachebBitmap());  //在这里调用
     WritePadDialog.this.dismiss(); //Dialog销毁
    } catch (Exception e) {
     e.printStackTrace();
    }
   }

4.在Activity中生成Dialog的时候,传入接口实现类,并重写接口里面的方法,如下代码

</pre>
case R.id.btn_handwriting:
WritePadDialog writeTabletDialog = new WritePadDialog(
UserSignActivity.this, new DialogListener() {
@Override
public void refreshActivity(Object object) {

bitmap = (Bitmap) object;
signPath = CreateBitmap.createFile(UserSignActivity.this,bitmap);
image_sign.setImageBitmap(bitmap);
}
});
writeTabletDialog.show();

break;

这样就完成了Dialog的值的传递,希望对有疑惑的人有点帮助。

 

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/1150.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者wangbin的打赏,我们会更加努力!    如果您想成为作者,请点我

发表我的评论
取消评论

表情