0

传递类中传递对象的代码

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(我正在传递对象)

4

3 回答 3

1

如果你想传递一个对象,你可以使用Parcelable interfaceBundles 可以容纳任何 parcelable,并且Intents 可以随身携带任何包裹,Bundle因为它们跨越了不同Activitys 和进程之间的边界。

于 2013-08-09T15:01:00.330 回答
1

考虑使用包裹......

使用 parcels 是一种比使用可序列化更好更快的方法

于 2013-08-10T08:22:38.390 回答
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)
于 2013-08-09T15:04:37.737 回答