Intent JSONObject到另一个活动

时间:2015-01-06 15:24:01

标签: java android json

我想将JSONObject传递给下面代码中else部分中的另一个活动,这样我就可以在其他活动中使用个人资料详细信息了,

public void redirectToActivity(JSONObject result, JSONObject profile){

    try {           
        String status = result.getString("status");

        if (status.equals("204")) {
            Intent intent = new Intent(this, ActivityMenu.class);
            intent.putExtra("user", "email");
            this.startActivity(intent);
        } 
        else {
            Intent intent = new Intent(this, RegisterActivity.class);
            this.startActivity(intent);
            //here I want to pass JSONObject profile to RegisterActivity
        }
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

4 个答案:

答案 0 :(得分:5)

要传递JSONObject,您可以使用String。例如:

 Intent intent = new Intent(this, RegisterActivity.class);
 intent.putExtra("profile", profile.toString());
 intent.putExtra("result", result.toString());
 this.startActivity(intent);

toString()实现JSONObject,类将对象编码为紧凑的JSON字符串。在RegisterActivity中,检索字符串:

 String profile = getIntent().getStringExtra("profile");
 JSONObject profileJSON = new JSONObject(profile)

答案 1 :(得分:0)

如果对象不可分割,则无法轻松地将对象传递给其他活动。为此,您可以创建一个类。例如,将其命名为RunTimeData。

在这个类中创建一个静态JSONObject。

public class RunTimeData{
    public static JSONObject object;
}

因此,无论何时存储数据,都可以按如下方式存储。

RunTimeData.object=result;

如果要使用此功能,请在另一个活动中使用

JSONObject result=RunTimeData.object.

最后当你确定你不再在程序中使用这个值时,将其置空。

RunTimeData.object=null;

答案 2 :(得分:0)

Blackbelt是对的,但另一个有效的解决方案是使用一个简单的对象实现 Parcelable

e.g。

MyObject obj = new MyObject();
obj.setTitle(myJsonObject.getJSONObject("title").opt("val").toString());
...
intent.putExtra("someCoolTAG", obj);

答案 3 :(得分:-1)

您可以使用全局数据

public class GlobalData extends Application{
    JSONObject jsonObj;
}

else{
    ((GlobalData)getApplication).jsonObj = myJsonObj;
    startActivity(new Intent(...));
}

您还需要在应用程序标记的清单中声明     机器人:名称=" .GlobalData"