设置windowCloseOnTouchOutside让startActivityForResult接收传值的问题

来源:互联网 发布:2016淘宝售假申诉成功 编辑:程序博客网 时间:2024/06/04 21:03
场景:类似淘宝中商品详情选择参数的例子,跳转用startActivityForResult

,点开选择规格Activity形式的dialog样式,设置dialog样式中windowCloseOnTouchOutside设置true;当我选择规格情况下点击了了空白地方使得规格弹框消失,而回到商品详情页中显示不了已选择颜色尺码等信息。

这个问题在http://blog.csdn.net/llc_9012/article/details/51094918这位兄弟这里知道了答案,其实我只想知道执行了什么生命周期或者某个方法导致的。其实很简单:

1.在onCreate()中,设置如下的窗口属性:

 getWindow().setFlags(LayoutParams.FLAG_NOT_TOUCH_MODAL,

LayoutParams.FLAG_NOT_TOUCH_MODAL); 

getWindow().setFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,

LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);

2.  onTouchEvent方法把值传回去就OK了
  @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (MotionEvent.ACTION_OUTSIDE == event.getAction()) {


            Intent intent = new Intent();
        Bundle bd=new Bundle();
        bd.putString("chooseSpec",choose.getText().toString().trim());
        intent.putExtras(bd);
        setResult(SpecOK, intent);


        finish();
            return true;
        }
        return super.onTouchEvent(event);
    }



阅读全文
0 0