通过intent在活动之间传递JSON数组

之前已经问了一次,但这对我来说根本不起作用。 所以我想我会再问一次。

我有一个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); } } 

我想通过对第二个活动(Loggedin)的意图发送我的完整JSONarray。 这样我就可以显示例如ct_email = json_data.getString(“email”); 这是第一个活动从mysql获取的数组中的另一个值。

这是关于这个主题的另一个问题: 将jsonarray从1个活动传递到另一个活动

这个解决方案对我不起作用,因为在第二个活动错误中一直说它无法将bundle转换为intent,我尝试了我能想到的一切。

 Intent b = getIntent().getExtras(); String userdata=b.getString("userdata"); 

谢谢


编辑

谢谢你的快速回答。 我是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"); } } 

错误是“typesString的方法getString(String)未定义”。 我一定是在做一些愚蠢的事。

getExtras()返回Bundle,而不是Intent。 像这样更改您的代码并尝试。

 Bundle b = getIntent().getExtras(); String userdata=b.getString("userdata"); 

您不能在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"); }