Mar*_*ude 5 arrays android json android-intent
之前已经问了一次,但这对我来说根本不起作用.所以我想我会再问一次.
我有一个JSONarray,我想使用intent传递给我的第二个活动.
这是我的代码的一部分,它连接到mysql数据库并将有关用户的数据放在JSONarray中.这一切都有效.
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line="0";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
String ct_user;
String ct_pass;
Intent personal = new Intent(Home.this, Loggedin.class);
try{
jArray = new JSONArray(result);
JSONObject json_data=null;
json_data = jArray.getJSONObject(0);
ct_user = json_data.getString("user");
ct_pass = json_data.getString("pass");
if (passwordstring.equals(ct_pass)){
Bundle b = new Bundle();
b.putString("userdata",json_data.toString());
personal.putExtras(b);
startActivity(personal);
}
}
Run Code Online (Sandbox Code Playgroud)
我想通过对第二个活动(Loggedin)的意图发送我的完整JSONarray.这样我就可以显示例如ct_email = json_data.getString("email"); 这是第一个活动从mysql获取的数组中的另一个值.
这是关于这个主题的另一个问题: 将jsonarray从1个活动传递到另一个活动
这个解决方案对我不起作用,因为在第二个活动错误中一直说它无法将bundle转换为intent,我尝试了我能想到的一切.
Intent b = getIntent().getExtras();
String userdata=b.getString("userdata");
Run Code Online (Sandbox Code Playgroud)
谢谢
编辑
谢谢你的快速回答.我是Stackoverflow的新手,所以请原谅我在代码标记等方面的错误.我试着把它做好.
但它仍然不适合我.这是我第二次活动的一部分:
public class Loggedin extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.loggedin);
myfunction();
}
public void myfunction(){
Bundle b = getIntent().getExtras();
String userdataArray = b.getString("userdata");
String ct_email;
ct_email = userdataArray.getString("email");
}
}
Run Code Online (Sandbox Code Playgroud)
错误是"类型String的方法getString(String)未定义".我一定是在做一些愚蠢的事.
getExtras()返回Bundle,而不是Intent.像这样更改您的代码并尝试.
Bundle b = getIntent().getExtras();
String userdata=b.getString("userdata");
Run Code Online (Sandbox Code Playgroud)
您不能在String上调用getString(),因为该方法是在JSONObject NOT String上定义的.因此编译错误.您必须将字符串解析为JSON对象,然后您可以使用它来提取该数据:
public void myfunction(){
Bundle b = getIntent().getExtras();
// parse the JSON passed as a string.
JSONObject json = new JSONObject( b.getString("userdata") );
String ct_email = json.getString("email");
}
Run Code Online (Sandbox Code Playgroud)