Android 如何将数据传递到上一个活动之前的活动

Android 如何将数据传递到上一个活动之前的活动,android,android-activity,Android,Android Activity,我有三项活动,例如A、B和C。A开始B,然后B开始C。我将从C中的后堆栈中删除B。然后我需要在完成C之前将一些数据从C传递到A。我的问题是如何将数据从C传递到A?如果您通过意图从A转到C来启动触觉,那么您可以通过意图的putExtra传递数据。如果您只需通过按back进入C,然后将数据写入某个公共位置与共享首选项类似,您可以从访问。您可以使用处理程序将数据从一个活动传递到另一个活动,也可以使用startActivityForResult()启动每个活动。然后,通过使用setResult(resu

我有三项活动,例如A、B和C。A开始B,然后B开始C。我将从C中的后堆栈中删除B。然后我需要在完成C之前将一些数据从C传递到A。我的问题是如何将数据从C传递到A?

如果您通过意图从A转到C来启动触觉,那么您可以通过意图的putExtra传递数据。如果您只需通过按back进入C,然后将数据写入某个公共位置与共享首选项类似,您可以从

访问。您可以使用
处理程序
将数据从一个活动传递到另一个活动,也可以使用
startActivityForResult()
启动每个活动。然后,通过使用
setResult(resultCode,data)
您可以将额外的数据传递给上一个活动,该活动可以在activityresult(int-requestCode,int-resultCode,Intent-data)的
函数中访问。

像这样尝试

在活动C中

Intent intent = new Intent(getBaseContext(), A.class);
intent.putExtra("Your_key-ID", value);
startActivity(intent);
在活动A中

Intent sender=getIntent();
String extraData=sender.getExtras().getString("Your_key-ID");
并检查此链接


如果您想在完成C活动之前将一些数据从C传递到A,那么您可以在A活动中使用广播接收器,并可以直接从C向A发送广播

在从A开始活动B之前,请编写以下代码。此代码将从活动C接收数据

BroadcastReceiver brd_receiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("receive data from C")) {
            // DO YOUR WORK HERE.
        }

    }
};

registerReceiver(brd_receiver, new IntentFilter("receive data from C"));
编写此代码以将数据从活动C发送到活动A

Intent intent = new Intent();
        intent.setAction("receive data from C");
        intent.putExtra(name, value); //SAVE YOU DATA INTO INTENT.
        sendBroadcast(intent);

如果它不起作用,希望它能帮助你,然后告诉我你面临的问题。我认为它应该可以工作。

创建一个类并将其作为单例类。然后使用setter和getter方法从一个类设置值,从另一个类获取值

public class SingletonObjectDemo {
private String value;
// use setter and getter here...


private static SingletonObject singletonObject;
// Note that the constructor is private
private SingletonObjectDemo() {
    // Optional Code
}
public static SingletonObjectDemo getSingletonObject() {
    if (singletonObject == null) {
        singletonObject = new SingletonObjectDemo();
    }
    return singletonObject;
}

}

上面的代码将从活动C开始一个新的活动a,我认为这是不正确的。这个答案可以解决我的问题,但我需要更改所有这些活动,所以我认为这不是一个好的解决方案。我认为这个答案可以解决我的问题,但我更喜欢只使用android功能,所以我将使用BroadcastReceiver。谢谢您的回答。@Leogo如果它解决了您的问题,那么您可以将此答案标记为已接受,以便对其他人有所帮助。