2014-04-22 46 views
1

我想将类对象类型的ArrayList从一个活动发送到另一个活动 但是,它给了我一个错误,请帮助我。我尝试了很多链接,但是,我的问题 没有解决。 致命异常MAIN: 了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?如何将类对象类型的ArrayList从一个活动发送到另一个活动?

//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); 

预先感谢您。

+1

你'LogSetGet'必须实现parcelable – Raghunandan

+0

http://stackoverflow.com/a/7400675/726863 –

回答

0

你写这

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); 
    } 

希望你得到这个

0

只是声明你的ArrayList这样上面的onCreate()

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

当你声明一个变量或方法,你可以调用任何你想与活动名称在应用程序中的位置。

例如

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

您的活动名称是什么,但在这里你声明 静态的ArrayList < LogSetGet> LST =新的ArrayList();

+0

这是ohk..but它不是很好的编程... 为什么我有这样的评论是..,有一个谷歌人给我们提供的工具,用于检索数据,并将数据从一个活动发送到另一个活动或其他片段。编写静态代码具有很大的意义。 我希望你能经历一次 – GvSharma

0

取决于类型:

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"); 
0

如果你的ArrayList对象是大的,或者如果你在许多差异性活动中使用他们,我建议你使用Singleton模式。简单的Singleton实例:

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; 
}} 

然后你就可以在任何地方得到TestSingleton的实例与的getInstance()在您的应用程序。内存中只有一个对象,您将能够使用它而不会在活动之间交换如何移动它。只需在任何你想要的地方调用TestSingleton.getInstance()。

相关问题