在 Android 中传递 ArrayLists [英] Passing ArrayLists in Android
问题描述
我正在尝试在 Android 中的活动之间传递数组列表.列表包含字符串.我已经阅读了很多关于 Parcelable 的内容.我是否需要创建一个 Parcelable 来传递一个 String 数组列表?截至目前,我正在使用 putStringArrayListExtra() 和 getSringArrayListExtra() 通过意图传递列表.
I'm trying to pass array lists between activities in Android. The lists contains strings. I've read a lot about Parcelable. Would I need to create a Parcelable to pass a String array list? As of now I am using putStringArrayListExtra() and getSringArrayListExtra() to pass the lists through intents.
这是我的一些代码.
Intent load = new Intent(getApplicationContext(), HelloTabWidget.class);
load.putStringArrayListExtra("albums", albums);
load.putStringArrayListExtra("songs", songs);
load.putStringArrayListExtra("artists", artists);
load.putStringArrayListExtra("fileName", fileName);
这是我用于获取数组列表的活动的 onCreate 方法.
This is my onCreate method for the acticity which obtains the array list.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.songlist);
Bundle extras = getIntent().getExtras();
isArtists = extras.getBoolean("artists");
isAlbums = extras.getBoolean("albums");
isSongs = extras.getBoolean("songs");
Intent get = getIntent();
songs = get.getStringArrayListExtra("songs");
artists = get.getStringArrayListExtra("artists");
albums = get.getStringArrayListExtra("albums");
fileName = get.getStringArrayListExtra("fileName");
if(isArtists == true)
updateArtistsList();
else if(isAlbums == true)
updateAlbumsList();
else if(isSongs == true)
updateSongList();
}
检索列表的类应该从列表中的数据创建一个 listView.每当我运行代码时,我都会在尝试制作列表时得到 nullPointerExceptions.我知道我的 listView 代码有效,所以我已经将问题缩小到传递数组列表的意图.
The class which retrieves the list is supposed to create a listView from the data in the lists. Whenever I run the code i get nullPointerExceptions when trying to make the lists. I know that my listView code works, so I have narrowed down the problem to the intents which pass the array lists.
提前致谢.
这是 logcat 的前几行.
Here are the first few lines from the logcat.
12-28 03:03:42.313: E/AndroidRuntime(873): FATAL EXCEPTION: main
12-28 03:03:42.313: E/AndroidRuntime(873): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.adam.mediaplayer/com.adam.mediaplayer.HelloTabWidget}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.adam.mediaplayer/com.adam.mediaplayer.MakeListActivity}: java.lang.NullPointerException
推荐答案
取决于arraylist的类型
It depends on the type of arraylist
putIntegerArrayListExtra(String name, ArrayList
value)
putParcelableArrayListExtra(String name, ArrayList extends Parcelable> value)
putStringArrayListExtra(String name, ArrayList
putCharSequenceArrayListExtra(String name, ArrayList
然后您可以通过将 put
替换为 get
并使用键字符串作为参数来读取下一个活动,例如
Then you can read from you next activity by replacing put
with get
with key string as argument,eg
myIntent.getStringArrayListExtra("arrayListName");
这篇关于在 Android 中传递 ArrayLists的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!