【问题标题】:Passing variables between classes在类之间传递变量
【发布时间】:2015-04-03 15:26:24
【问题描述】:

我的问题是如何在两个类 extends Activity 的类之间传递变量,是的,我有 2 个主要类

例如,我有一个包含所有 setter 和 getter 的对象类,然后将其放入 ArrayList<object>,但是当我在 classA extends Activity 中设置变量时,我想传递我为对象设置的变量classA 中的类,以便我可以在 classB 中获取它们扩展 Activity

我厌倦了在 B 班做这些

ArrayList<object> objArrayList;

objArrayList.get(pos).getName;

但我回来的只是一个空指针。

我也做了Log.d("test", "name: " + objArrayList.get(pos).getName);

classA 中它工作正常,但是当我在classB 中执行此操作时,我得到一个空指针

【问题讨论】:

  • 您可以使用 SharedPreferences 在活动之间传递数据,请参阅此链接“stackoverflow.com/questions/23024831/…
  • 尝试对该变量使用静态、sharedpreferences 或与字符串数组捆绑。
  • thx @Allu 现在会去看看
  • @Allu 在将数据从 JSON 网站获取到 ArrayList 时如何使用它,所以你说使用 SharedPreferences 而不是 ArrayList?抱歉,我不熟悉 SharedPreferences 是否有任何其他选项可以使用 ArrayList 代替,因为如果我切换到 SharedPreferences 我必须更改所有内容
  • @chiru 我尝试将变量设为静态并将数据放入字符串数组中,但我仍然得到一个空指针

标签: java android object parameter-passing getter-setter


【解决方案1】:
    In first class,you need to start second activity 

      Intent i = new Intent(getActivity(), classB.class);
                i.putExtra("Value1", name);  //name is string value which is need to passed in second activity
                startActivity(i);

        In classB...
        Bundle extras = getIntent().getExtras();
            String value = extras.getString("Value1");  
//here as value we get string passed from first activity

【讨论】:

  • 虽然这可能会回答 OP 的问题,但几句话的解释会让当前和未来的读者更容易理解。
【解决方案2】:

试试这个...

在你的第一个活动中......

            Intent i = new Intent(this, SecondActivity.class);
            i.putExtra("My_ARRAY_LIST", arrayList);
            startActivity(i);

你可以放任何你想发送的字符串、int、boolean、ArraList 等。 (对象必须是可序列化/可解析的) 在第二个活动中,您应该从意图中提取它,

Intent i = getIntent();
ArrayList<String> arraList = (ArrayList<String>) i.getSerializableExtra("MY_ARRAY_LIST");

【讨论】:

    【解决方案3】:

    为了在活动之间传递变量,请使用你的意图,你开始第二个活动,以及 putExtra 方法:

    Intent intent = new Intent(this, classB.class);
    String name = objArrayList.get(pos).getName;
    intent.putExtra("name",name);
    

    在您的 classB 中,您可以通过 getIntent() 方法获取此参数:

    Bundle extras = getIntent().getExtras();
    if(extras != null) {
       String name = extras.getString("name");
       ...
    }
    

    【讨论】:

    • 效果很好,但只需要在“名称”中添加所有其他字段。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多