从共享首选项中连接两个值

时间:2017-06-24 15:07:41

标签: android sharedpreferences

在解决这个问题时遇到一些麻烦。我在Config类中存储了两个值作为共享首选项,电子邮件地址和URL。这将从我的服务器解析JSON到ListView。我试图将它们连接在一起,但它不起作用。

Config.java

public class Config {

    //URL to JSON API
    public static final String GET_ORDERS_URL = "http://192.568.8.245/android/json3.php?user_email=";

    //Storing current user
    public static final String EMAIL_SHARED_PREF = "user_email";

}

MainActivity.java

public class MainActivity extends AppCompatActivity {

    // Concatenated URL to JSON API
        private static final String baseurl = Config.GET_ORDERS_URL;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Fetching email from shared preferences
        SharedPreferences sharedPreferences = getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE);
        String user_email = sharedPreferences.getString(Config.EMAIL_SHARED_PREF,"Not Available");

        //Concatenated JSON API URL
        String url = baseurl + user_email;

        //Initializing Toolbar
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        toolbar.setNavigationIcon(R.drawable.ic_back);
        toolbar.setTitle(user_email);
}

我知道user_email正在存储,因为我在MainActivity内调用它并使用它设置工具栏的标题。用实际的电子邮件替换user_email会导致成功,显然我不想这样做。知道我需要做什么吗?

3 个答案:

答案 0 :(得分:0)

注意:OP已经将此答案应用于其中的代码问题。它适用于问题的第1版。

串联正在运行并产生字符串:

"http://192.568.8.245/android/json3.php?user_email=user_email"

因为您使用共享首选项键连接,而不是值。

您希望与从共享首选项中检索的值进行连接

String user_email = sharedPreferences.getString(Config.EMAIL_SHARED_PREF);
String url = Config.GET_ORDERS_URL + user_email;

答案 1 :(得分:0)

使用android UrlEncoder类来制作正确的网址

这是最好的方法。 使用手动连接可能会导致请求格式错误。

并且您也可以像这样构建URI

String uri = Uri.parse("http://...")
                .buildUpon()
                .appendQueryParameter("key", "val")
                .build().toString();

答案 2 :(得分:0)

获取值并调用concatStrings(str1,str2);
使用类似这样的东西

String concatStrings(String string1,String string2){
    StringBuilder strBuilder=new StringBuilder();
    strBuilder.append(string1);
    strBuilder.append(string2);
    return  strBuilder.toString();
}