Android 在片段之间直接传递复杂数据?什么';代码怎么了?

Android 在片段之间直接传递复杂数据?什么';代码怎么了?,android,android-fragments,Android,Android Fragments,我想在两个片段之间传递数据。我传递的数据是SongDetails类的对象。下面是传递数据的片段的代码 ArrayList<SongDetails> Songinfo =new........; if (Songinfo.size()>0)//Songinfo is an object of the class SongDetails.. { Bundle bundle = new Bundle(); bundle.putP

我想在两个片段之间传递数据。我传递的数据是SongDetails类的对象。下面是传递数据的片段的代码

ArrayList<SongDetails> Songinfo =new........;
if (Songinfo.size()>0)//Songinfo is an object of the class SongDetails..

        {
         Bundle bundle = new Bundle();

         bundle.putParcelableArrayList("Fragdata",Songinfo);
         dv.setArguments(bundle);

        }

不能在两个片段之间直接传递数据。相反,您必须通过之前必须创建的接口将数据从片段1传递到活动

然后,在活动中实现的方法中,您应该检索对片段2的对象引用,并调用您创建的公共方法并执行该作业

Android官方文档中有一个很好的教程:


您不能在两个片段之间直接传递数据。相反,您必须通过之前必须创建的接口将数据从片段1传递到活动

然后,在活动中实现的方法中,您应该检索对片段2的对象引用,并调用您创建的公共方法并执行该作业

Android官方文档中有一个很好的教程:


要将任何数据从应用程序中的任何位置传送到其他任何位置,请使用EventBus库。您也可以通过实现observer设计模式来实现这一点,但使用库要容易得多,因为它还可以为您处理线程切换(以防您需要它) 这里是链接

要将任何数据从应用程序中的任何位置传送到其他任何位置,请使用EventBus库。您也可以通过实现observer设计模式来实现这一点,但使用库要容易得多,因为它还可以为您处理线程切换(以防您需要它) 这里是链接

请粘贴日志。你得到了什么错误?歌曲信息是什么?粘贴其代码。Songinfo是SongDetails类的对象。您可以始终通过全局静态字段传递消息。@SargeBorsch例如?请粘贴日志猫。你得到了什么错误?歌曲信息是什么?粘贴它的代码。Songinfo是SongDetails类的对象。您可以始终通过全局静态字段传递消息。@SargeBorsch例如?不,您错了……有一种方法……这就是我在问题“直接”中提到的原因……虽然不推荐……不,你错了……有一种方法……这就是为什么我在问题“直接”中提到……虽然不推荐。。。
Bundle bundle=this.getArguments(); 
    final ArrayList<SongDetails> Songinfo =bundle.getParcelableArrayList("Fragdata"); 
package sourcecode.jazzplayer;


import android.graphics.Bitmap;
import android.os.Parcel;
import android.os.Parcelable;

public class SongDetails implements Parcelable {
    Bitmap icon;
    String song;
    String Artist;
    String Album;
    String Path;
    int time;
    int icLauncher;

    public SongDetails() {
    }

    public SongDetails(Parcel in) {
        String[] data = new String[4];
        in.readStringArray(data);
        this.Path = data[0];
        this.song= data[1];
        this.Album= data[2];
        this.Artist = data[3];
    }

    public String getSong() {
        return song;
    }

    public void setSong(String song) {
        this.song = song;
    }

    public String getArtist() {
        return Artist;
    }

    public void setArtist(String Artist) {
        this.Artist = Artist;
    }

    public Bitmap getIcon() {
        return icon;
    }

    public void setIcon(Bitmap bitmap) {
        this.icon = bitmap;
    }

    public String getPath2() {
        return Path;
    }

    public void setPath2(String Path) {
        this.Path = Path;
    }

    public String getAlbum() {
        return Album;
    }

    public void setAlbum(String Album) {
        this.Album = Album;
    }

    public void setIcon(int icLauncher) {
        this.icLauncher = icLauncher;
    }










    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeStringArray(new String[] { this.Path,this.song,this.Album,this.Artist });

    }

    public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
        public SongDetails createFromParcel(Parcel in) {
            return new SongDetails(in);
        }

        public SongDetails[] newArray(int size) {
            return new SongDetails[size];
        }
    };
}