在Android中传递ArrayLists

Ada*_*ela 5 android arraylist android-intent android-activity

我正在尝试在Android中的活动之间传递数组列表.列表包含字符串.我读过很多关于Parcelable的文章.我是否需要创建一个Parcelable来传递一个String数组列表?截至目前,我使用putStringArrayListExtra()和getSringArrayListExtra()通过意图传递列表.

这是我的一些代码.

Intent load = new Intent(getApplicationContext(), HelloTabWidget.class);
        load.putStringArrayListExtra("albums", albums);  
        load.putStringArrayListExtra("songs", songs);  
        load.putStringArrayListExtra("artists", artists); 
        load.putStringArrayListExtra("fileName", fileName);  
Run Code Online (Sandbox Code Playgroud)

这是我的onCreate方法,用于获取数组列表的acticity.

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();    
}
Run Code Online (Sandbox Code Playgroud)

检索列表的类应该从列表中的数据创建listView.每当我运行代码时,我都会在尝试制作列表时获得nullPointerExceptions.我知道我的listView代码工作,所以我已经将问题缩小到通过数组列表的意图.

提前致谢.

编辑:以下是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
Run Code Online (Sandbox Code Playgroud)

Lal*_*ani 5

这取决于arraylist的类型

  • 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)

然后,你可以从你的下一个活动通过更换阅读putget与密钥字符串作为参数,如

myIntent.getStringArrayListExtra("arrayListName");
Run Code Online (Sandbox Code Playgroud)