【问题标题】:How to send ArrayList of class object type from one activity to another activity?如何将类对象类型的 ArrayList 从一个活动发送到另一个活动?
【发布时间】:2014-04-22 07:33:15
【问题描述】:

我想将类对象类型的 ArrayList 从一个活动发送到另一个活动 但是,它给了我一个错误,请帮助我。我尝试了很多链接,但是我的问题 没有解决。 致命例外主要: Java.Lang.RuntimeException 我试过这些链接: Passing ArrayList with objects to new Activity? How to pass ArrayList of Objects from one to another activity using Intent in android?

//Sending Side Code:


                         if(result.size()>0)
                        {

        ArrayList< LogSetGet> lst=new ArrayList<LogSetGet>();
        lst=result;
         Intent i=new Intent(LogIn.this,Home.class);
         i.putExtra("list",result);
         startActivity(i);
                     }

//Receiving side Code:
        Intent i=this.getIntent();
        ArrayList<LogSetGet>ls=ArrayList<LogSetGet>)i.getSerializableExtra("list");
        ArrayAdapter<LogSetGet> adptr=new ArrayAdapter<LogSetGet>(Home.this,android.R.layout.simple_list_item_1,ls);
        lv.setAdapter(adptr);

提前谢谢你。

【问题讨论】:

标签: android


【解决方案1】:

你写这个

class LogSetGet implements Serializable{

}

    if(result.size()>0){
    ArrayList< LogSetGet> lst=new ArrayList<LogSetGet>();
    lst=result;
    Intent i=new Intent(LogIn.this,Home.class);
    i.putExtra("list",result);
    startActivity(i);
    }

希望你能得到这个

【讨论】:

    【解决方案2】:

    只需在 onCreate() 上面声明你的 ArrayList

    static ArrayList< LogSetGet> lst=new ArrayList<LogSetGet>();
    

    当您声明一个变量或方法时,您可以在应用程序中使用 Activity 名称调用任何您想要的位置。

    例如

    ArrayList< LogSetGet> lst1 = new ArrayList<LogSetGet>();
    lst1  = youractivityname.lst; 
    

    您的活动名称只是您声明的位置 静态 ArrayList lst=new ArrayList();

    【讨论】:

    • 它是好的..但它不是很好的编程......为什么我发表这个评论是..,谷歌人给我们提供了一种工具来检索和发送数据从一个活动到另一个或一个片段到另一个片段。写静态具有广泛的意义。我希望你能经历一次
    【解决方案3】:

    取决于类型:

    putIntegerArrayListExtra(String name, ArrayList<Integer> value)
    
    putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)
    
    putStringArrayListExtra(String name, ArrayList<String> value)
    
    putCharSequenceArrayListExtra(String name, ArrayList<CharSequence> value)
    

    然后你可以从下一个活动中读取,使用键字符串作为参数:

    myIntent.getStringArrayListExtra("arrayPeople");
    

    【讨论】:

      【解决方案4】:

      如果您在 ArrayList 中的对象很大,或者如果您将在许多不同的活动中使用它们,我建议您使用单例模式。简单单例示例:

      public class TestSingleton {
      
      private static TestSingleton testSingleton;
      private ArrayList<String> testArray;
      
      TestSingleton() {
          testArray = new ArrayList<String>();
      }
      
      public static TestSingleton getInstance() {
          if (testSingleton == null)
              testSingleton = new TestSingleton();
          return testSingleton;
      }}
      

      然后,您将能够在应用程序的任何位置使用 getInstance() 获取 TestSingleton 的实例。内存中只有一个对象,您将能够使用它而无需担心如何在活动之间移动它。只需在您想要的任何地方调用 TestSingleton.getInstance()。

      【讨论】:

        猜你喜欢
        • 2012-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-20
        • 1970-01-01
        • 2014-12-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多