私はArrayListを持っています< Object>ここで、Objectは私が作成したクラスのインスタンスです。この新しい配列リストをメインアクティビティに戻して、ナビゲーションドレット項目に配置したいと思います。ArrayListを<Object>に戻す(Android)
どのようにArrayList <オブジェクト>をアクティビティからメインのものに戻しますか?
しかし私はそれがここ
を「typeパラメータTのための推論Object型は、その範囲内で、android.os.parcelable実装する必要がありますされていない」というのが私のコードである私に指示bundle.getParcelableArrayListを試してみました:
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();
}
}
}
あなた 'Object'クラスは' Parcelable'を実装する必要があります。独自のカスタムオブジェクトなどの複雑なデータは、最初にシリアル化せずにインテントを通じて送信することはできません。 – b85411
'ArrayList'は 'ArrayList
シングルトンクラスを宣言し、これをクラスに追加することができます。そして、あなたはどんな活動からでもこれにアクセスできます –