簡體   English   中英

傳遞ArrayList <Object> 返回主要活動(Android)

[英]Passing ArrayList<Object> back to main Activity (Android)

我有一個ArrayList <Object>,其中Object是我制作的類的實例。 我想將此新數組列表傳遞回主活動,以將其放入NavigationDrawer項中。

如何將ArrayList <Object>從一項活動傳遞回主要活動?

我嘗試了bundle.getParcelableArrayList,但是它告訴我“類型參數T的推斷類型對象不在其范圍之內,應該實現android.os.parcelable”

這是我的代碼:

public void createPlaylist(String playlistName, ArrayList<Song> newPlaylistSongsArray) {
    Intent returnIntent = new Intent();
    Bundle b = new Bundle();
    b.putParcelableArrayList("array", (ArrayList<? extends Parcelable>) newPlaylistSongsArray);
    returnIntent.putExtra("playListName", playlistName);
    returnIntent.putExtra("array", newPlaylistSongsArray);
    setResult(Activity.RESULT_OK,returnIntent);
    finish();
}

和:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1) {
        if (resultCode == Activity.RESULT_OK){
            String newPlaylistName = data.getStringExtra("playListName");
            Bundle b = getIntent().getExtras();
            final ArrayList<Song> newPlaylist = b.getParcelableArrayList("array");
            Toast.makeText(MP3Player.this, "New Playlist Created", Toast.LENGTH_LONG).show();
        }
        if (resultCode == Activity.RESULT_CANCELED) {
            Toast.makeText(MP3Player.this, "Shit went wrong yo!", Toast.LENGTH_LONG).show();
        }
    }
}

最簡單的方法是,您的Song類需要實現Serializable。

Bundle bundle = new Bundle();
bundle.putSerializable("newPlaylist", newPlaylist);
intent.putExtras(bundle);

在其他活動中:

Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();

ArrayList<Song> newPlaylist=
               (ArrayList<Song>)bundle.getSerializable("newPlaylist");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM