Fragment中onActivityResult不响应

来源:互联网 发布:加拿大游戏公司 知乎 编辑:程序博客网 时间:2024/05/16 15:12

/////////////////2016/10/17//////////////////

////////////////by   xbw///////////////////////

////////////////android studio/////////////


最近做的项目,需要android+h5,在fragment中内嵌h5,这个确实便利不少。

用户体验很棒。

但是问题来了,其中有个模块是修改密码的,修改之后我们需要一层一层

finish,然后跳转到login界面,重新登录。。。。

一开始想的是利用信鸽推送的消息透传进行h5与android交互。但是信鸽服务器延迟有点高,

没办法及时跳转,方案被pass了。。。。

最后还是在webview中做手脚了。。。。

 webChromeClient = new VideoEnabledWebChromeClient(nonVideoLayout, videoLayout, loadingView, webView) // See all available constructors...        {            // Subscribe to standard events, such as onProgressChanged()...            @Override            public void onProgressChanged(WebView view, int newProgress) {                // Your code...                pb.setProgress(newProgress);                if (newProgress == 100) {                    //加载完成刷新图标消失                    swipeLayout.setRefreshing(false);                    pb.setVisibility(View.GONE);                    if(webView.getUrl().equals("http://8888/mvp/user/login.php")){                        Intent mIntent = new Intent();                        mIntent.putExtra("close", "Y");                        setResult(1000, mIntent);                        SharedPreference sharedPreference=new SharedPreference(WebActivity.this);                        sharedPreference.DisconnectLogin();                        finish();                    }                }                super.onProgressChanged(view, newProgress);            }        };
h5会在修改完密码后跳转到一个login界面,我们正好利用webview获取当前url来进行判断。

在fragment中的设置

case R.id.button_imgd:mIntent.setClass(getActivity(), WebActivity.class);mIntent.putExtra("title_name",getString(R.string.menu_button_4));mIntent.putExtra("url", getString(R.string.menu_button_url_4)+readUserId());//不要getActivity().startActivityForResult(mIntent, 1000);break;

已经做了标注,注释就是重点。。。。

千万不要写成getActivity().startActivityForResult(mIntent,1000);

这样是无效的。。。。。

@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(data==null)return ;if (requestCode == 1000) {String result_value = data.getStringExtra("close");if(result_value.equals("Y")){startActivity(new Intent(getActivity(), LoginActivity.class));getActivity().finish();}}}

原因查找资料很详细,照抄一些过来

……并没有好的解释,希望大家补充,谢谢大家
h5逻辑

<script>    $(document).ready(function(){        var uid=$("#uid").val();        $("#ss-pwd-update").click(function(){            $.ajax({                type:"POST",                url:"_sspwd_update_m.php",                dataType:"json",                data:{                    sspwd: $("#sspwd").val(),                    uid: $("#uid").val()                },                success:function(data){                    if(data.ok){                        $("#ss-msg-success").show();                        $("#ss-msg-success-p").html(data.msg);                        window.setTimeout("location.href='login.php'", 1000);                    }else{                        $("#ss-msg-error").show();                        $("#ss-msg-error-p").html(data.msg);                    }                },                error:function(jqXHR){                    alert("发生错误:"+jqXHR.status);                    // 在控制台输出错误信息                    console.log(removeHTMLTag(jqXHR.responseText));                }            })        })    })</script>


0 0
原创粉丝点击