Android中传递的ArrayListAndroid、ArrayList

2023-09-12 04:47:11 作者:真实所有幻影

我想在Android的传递活动之间的数组列表。这份名单包含字符串。我读过很多关于Parcelable。我需要创建一个Parcelable通过一个字符串数组列表?截至目前,我使用putStringArrayListExtra()和getSringArrayListExtra()通过意图传递名单。

下面是我的一些code。

 意图负荷=新的意向书(getApplicationContext(),HelloTabWidget.class);
        load.putStringArrayListExtra(专辑,专辑);
        load.putStringArrayListExtra(歌,歌曲);
        load.putStringArrayListExtra(艺术家,艺术家);
        load.putStringArrayListExtra(文件名,文件名);
 

这是我为它获取数组列表中的acticity onCreate方法。

 公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.songlist);

    捆绑额外= getIntent()getExtras()。
    isArtists = extras.getBoolean(艺术家);
    isAlbums = extras.getBoolean(相册);
    isSongs = extras.getBoolean(诗经);

        意图的get = getIntent();
        歌曲= get.getStringArrayListExtra(诗经);
        艺术家= get.getStringArrayListExtra(艺术家);
        专辑= get.getStringArrayListExtra(相册);
        文件名= get.getStringArrayListExtra(文件名);



    如果(isArtists ==真)
        updateArtistsList();
    否则,如果(isAlbums ==真)
        updateAlbumsList();
    否则,如果(isSongs ==真)
        updateSongList();
}
 
Android中打包arr,并集成到安卓项目中

以检索列表中的类应该创建从列表中的数据列表视图。每当我运行codeI得到NullPointerException异常努力使列表时。我知道我的ListView code的作品,所以我已经缩小问题到传递数组列表中的意图。

在此先感谢。

编辑: 下面是从logcat的前几行。

  3月12号至28号:03:42.313:E / AndroidRuntime(873):致命异常:主要
三月12日至28日:03:42.313:E / AndroidRuntime(873):java.lang.RuntimeException的:无法启动的活动ComponentInfo {com.adam.mediaplayer / com.adam.mediaplayer.HelloTabWidget}:java.lang.RuntimeException的:无法启动活动ComponentInfo {com.adam.mediaplayer / com.adam.mediaplayer.MakeListActivity}:显示java.lang.NullPointerException
 

解决方案

这取决于ArrayList的类型

putIntegerArrayListExtra(字符串名称,ArrayList的<整数GT;值)

putParcelableArrayListExtra(字符串名称,ArrayList的&LT ;?延伸Parcelable>值)

putStringArrayListExtra(字符串名称,ArrayList的<字符串>值)

putCharSequenceArrayListExtra(字符串名称,ArrayList的< CharSequence的>值)

然后就可以通过更换从你读下一个活动 GET 以关键字为参数,如

  myIntent.getStringArrayListExtra(arrayListName);
 

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.

Here is some of my code.

Intent load = new Intent(getApplicationContext(), HelloTabWidget.class);
        load.putStringArrayListExtra("albums", albums);  
        load.putStringArrayListExtra("songs", songs);  
        load.putStringArrayListExtra("artists", artists); 
        load.putStringArrayListExtra("fileName", fileName);  

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

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.

Thanks in advance.

EDIT: 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

解决方案

It depends on the type of 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)

Then you can read from you next activity by replacing put with get with key string as argument,eg

myIntent.getStringArrayListExtra("arrayListName");