将parcelable对象从second_activiy发送到main_activity,是否可能?

时间:2017-06-20 08:36:11

标签: android

我试图将第二个活动的parcelabe对象发送到主要活动,但主要活动仍在活动堆栈中,所以我有两个主要活动正在运行,我知道这是因为我有一个按钮来关闭应用程序,我必须按两次按钮,每个主要活动一个。

是否可以在不重新打开主要活动的情况下将可分配对象发送到主要活动?是不可能的,或者我必须使用sql Lite而不是?

是否使用其他命令代替startActivity()来调用现在位于活动堆栈中的活动?

我的目标是在列表中保存用户在第二个活动中保存的新文档,并在主活动中将其显示在所有文档中。

我可以将第二个活动的数据发送恢复到主要活动,但我有两个主要活动正在运行...

有什么建议吗?

提前致谢。

我的代码:

public class Albaran implements Parcelable {
private String numalbaran;
private boolean tienefoto;
private boolean incidencia;
private Uri imageToUploadUri;

public Albaran(){

}

public Albaran(String numalbaran, boolean tienefoto, boolean incidencia, Uri imageToUploadUri) {
    this.numalbaran = numalbaran;
    this.tienefoto = tienefoto;
    this.incidencia = incidencia;
    this.imageToUploadUri = imageToUploadUri;
}

protected Albaran(Parcel in) {
    numalbaran = in.readString();
    tienefoto = in.readByte() != 0;
    incidencia = in.readByte() != 0;
    imageToUploadUri = in.readParcelable(Uri.class.getClassLoader());
}

public static final Creator<Albaran> CREATOR = new Creator<Albaran>() {
    @Override
    public Albaran createFromParcel(Parcel in) {
        return new Albaran(in);
    }

    @Override
    public Albaran[] newArray(int size) {
        return new Albaran[size];
    }
};

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

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeString(numalbaran);
    dest.writeByte((byte) (tienefoto ? 1 : 0));
    dest.writeByte((byte) (incidencia ? 1 : 0));
    dest.writeParcelable(imageToUploadUri, flags);
}

}

我打电话给我的主要活动中的第二个活动

public void recogerDatos(View view){  //Onclick
    intent = new Intent(this,RecogerActivity.class);
    startActivity(intent);
}

我打电话给第二个活动的第一个活动

public void guardarAlbaran(View view){ //Save data when button is pressed
    Albaran NuevoAlbaran = new Albaran(numAlbaran.toString(),incidenciaCheckbox.isChecked(), incidenciaCheckbox.isChecked(), imageToUploadUri);

    Intent intent = new Intent(this, MainActivity.class);
    intent.putExtra("Albaran", NuevoAlbaran);
    startActivity(intent);
    finish();                                  //Finalizar Actividad
}

我从主要活动中的parcelable对象中读取数据

Albaran nuevoAlbaran;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    nuevoAlbaran = getIntent().getParcelableExtra("Albaran");

} 

0 个答案:

没有答案