在解决这个问题时遇到一些麻烦。我在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
会导致成功,显然我不想这样做。知道我需要做什么吗?
答案 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();
}