【问题标题】:Access a varibale from MainActivity class to another class将变量从 MainActivity 类访问到另一个类
【发布时间】:2015-11-22 13:06:24
【问题描述】:

我的MainActivity 在函数下有一个JSONObject,我想在函数外和另一个类中使用它,我该怎么做?

我想让这个变量public,这里是代码:

public void ListDrwaer() {
        List<Map<String, String>> productList = new ArrayList<Map<String, String>>();

        try {
            JSONObject jsonResponse = new JSONObject(jsonResult);
            JSONArray jsonMainNode = jsonResponse.optJSONArray("products");

            for (int i = 0; i < jsonMainNode.length(); i++) {
                JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);

            }
          //  System.out.println("*****JARRAY*****" + jsonMainNode.getJSONObject(0));
            List<Map<String, String>> productLista = new ArrayList<Map<String, String>>();
            JSONObject pro1 = jsonMainNode.getJSONObject(1);
            String data = pro1.getString("name");
        //    System.out.println("*****JARRAY*****" + data);


            System.out.println("*****JARRAY*****" + pro1);



        } catch (JSONException e) {
            Toast.makeText(getApplicationContext(), "Error" + e.toString(),
                    Toast.LENGTH_SHORT).show();
        } 

我想制作pro1(即JSONObjectpublic并在public void之外使用它,并在另一个类中使用它。

我可以使用 put 或 add 来做到这一点吗?

【问题讨论】:

  • 我认为您可以将其设置为公共变量,然后在另一个类/活动中,调用 MainActivity.pro1
  • 当我想在 public void 下这样做时,我得到 Modifier public not allowed here 错误。
  • public 直接在'public class MainActivity extends...'下

标签: java android json variables global-variables


【解决方案1】:
  1. 您可以将该变量声明为 public。 就放个

    公共静态 JSONObject pro1;

到你的班级声明。 2. 这不安全,因为: 1. 如果您的应用程序将被 Android 系统杀死并重新创建,该变量将消失。 2. 从其他线程访问该变量时要小心。

【讨论】:

    【解决方案2】:

    您需要先在任何方法之外创建变量

    Static JSONObject pro1;
    

    然后通过使用简单地访问它

    classname.pro1
    

    【讨论】:

    • 做到了。我明白了:从未使用过字段“pro1”。
    • 是的,因为在您的 listDrwaer 中,您必须将 JSONObject pro1 更改为仅 pro1,这样它就不会再次设置为私有方法
    【解决方案3】:

    试试下面的代码,它可能会有所帮助..

    Intent intent = new Intent(getBaseContext(), SignoutActivity.class);
    intent.putExtra("EXTRA_SESSION_ID", sessionId);
    startActivity(intent);
    

    【讨论】:

    • 将 pro1 定义为一个公共静态变量,然后你可以在别处的任何类中使用它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    相关资源
    最近更新 更多