我有三项活动,例如。 A,B和C.开始B,B开始C.我将从C中的后栈中删除B.然后我需要在完成C之前将一些数据从C传递给A.我的问题是如何传递数据C到A?
答案 0 :(得分:1)
如果您想在完成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);
希望它能帮助你,如果它不工作,那么告诉我你面临的问题。我认为它应该有用。
答案 1 :(得分:1)
创建一个类并将其设为Singleton类。然后使用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;
}
}
答案 2 :(得分:0)
如果你通过Intent从A开始执行来自A的Go,那么你可以通过意图的putExtra传递数据。如果你只是按回去C然后在一些常见的地方写你的数据,如共享首选项,这样你就可以从A访问
答案 3 :(得分:0)
您可以使用Handler
将数据从一个活动传递到另一个活动或者您可以使用startActivityForResult()
启动每个活动。然后使用setResult(resultCode, data)
,您可以将额外数据传递给之前的活动,可以通过函数onActivityResult(int requestCode, int resultCode, Intent data)
访问。
答案 4 :(得分:0)
尝试这样;;
在活动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");
并查看此链接