如何传递来自url&的两个id使用共享首选项将其传递给其他类

时间:2015-12-31 04:57:13

标签: android string url sharedpreferences parameter-passing

http://example/map.php?cust_id=1&store_id=2,在onclick链接期间获取cust_id&来自url的store_id并将其保存在另一个共享首选项中。我打电话给其他班级的两个id&想要将这两个id发送到其他网址,但是id的值没有上传到该网址,如果仅传递cust_id意味着一切正常,同时传递两个值无法正常工作。对这个概念不熟悉请帮助我。

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        CharSequence urlstring1="cust_id";
        CharSequence urlstring2="store_id";
        String[] details = url.split("[?]");
        String[] strdetails =details[1].split("&");
        String strcust_id = strdetails[1];
        String strstore_id= strdetails[1];

        if (url.contains(urlstring1)& url.contains(urlstring2)){
            SharedPreferences settings = getActivity().getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = settings.edit();
            editor.putString("Customer", strcust_id).putString("Store", strstore_id);
            editor.commit();

            AboutusFragment fragment2 = new AboutusFragment();
            FragmentManager fragmentManager = getFragmentManager();
            android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container, fragment2);
            fragmentTransaction.commit();
            return false;
        }else{
            return super.shouldOverrideUrlLoading(view, url);
        }
    }

下一堂课

if(CheckNetwork.isInternetAvailable(getContext().getApplicationContext())) //returns true if internet available
    {
        SharedPreferences settings = getActivity().getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        String strquerystring=settings.getString("Customer","")+settings.getString("Store","");
        String strs = "http://example/bookappointment.php?" + strquerystring;
        web.setWebViewClient(new myWebClient());
        web.getSettings().setJavaScriptEnabled(true);
        web.loadUrl(strs);
    }

2 个答案:

答案 0 :(得分:5)

可能在这里:

String strcust_id = strdetails[1];
String strstore_id= strdetails[1];

导致问题的行,因为为这两个变量分配了strdetails[1]个相同的值。

而不是使用String.split从url获取参数。使用android.net.Uri使用以下名称从URL获取这两个参数:

Uri uriURL=Uri.parse(url);
String strcust_id=uriURL.getQueryParameter("cust_id");
String strstore_id =uriURL.getQueryParameter("store_id");

现在将strcust_idstrstore_id值保存在SharedPreferences中。 并确保在课程中导入android.net.Uri包。

答案 1 :(得分:1)

你的问题在于以下几行:

String strcust_id = strdetails[1];
String strstore_id= strdetails[1];

两者不应该相同,请尝试使用此

String strcust_id = strdetails[0];
String strstore_id= strdetails[1];

split()可能会产生问题,最好使用getQueryParameter()

Uri uri=Uri.parse(url);
String cust_id=uri.getQueryParameter("cust_id");
String store_id =uri.getQueryParameter("store_id");