无法将类的对象从一个活动传递到另一个活动?

时间:2013-08-09 14:50:26

标签: android android-activity serializable

在传递类中传递Object的代码

final ArrayList<SongDetails> Songinfo = getSongsFromDirectory(f);
public void onItemClick(AdapterView a, View v, int position, long id) {


               Intent intent = new Intent(getActivity(), NowPlaying.class);
               intent.putExtra("Data1",songinfo);

               intent.putExtra("Data2",position);
               startActivity(intent);

                     }
             });

检索类中的代码

Intent i = getIntent();


        ArrayList<SongDetails> Songinfo2 = (ArrayList<SongDetails>)i.getSerializableExtra("Data1"); 
        position=i.getIntExtra("Data2", 1);

我已经在类和SongDetails类中实现了Serializable(我传递的是其中的对象)

3 个答案:

答案 0 :(得分:1)

如果您想传递一个对象,可以使用Parcelable interfaceBundles 可以保留任何parcelable,并且Intent可以在它们跨越不同Bundle和进程之间的边界时保留Activity任何{{1}}。

答案 1 :(得分:1)

考虑使用包裹.....

使用parcel是一种比使用serializable更好更快的方式

答案 2 :(得分:0)

使用套装,例如

Intent myIntent = new Intent(view.getContext(),Mapper.class);
Bundle b = new Bundle();
b.putString("A_STRING", aString);
myIntent.putExtras(b);
startActivityForResult(myIntent, 0);

然后

Intent intent = this.getIntent();
Bundle b = intent.getExtras();
aString = b.getString("A_STRING");

但要适应你的目的。

补充:大概你需要使用像

这样的东西
b.putParcelableArrayList(String key, ArrayList<? extends Parcelable> value)

b.getParcelableArrayList(String key)