1

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

4

5 回答 5

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);

如果它不起作用,希望它会对您有所帮助,然后告诉我您面临的问题。我认为它应该工作。

于 2012-06-12T04:08:12.250 回答
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;
}

}

于 2012-06-12T04:17:48.520 回答
0

如果您通过 Intent 启动Activity 以从 A 转到 C,那么您可以通过 putExtra of intent 传递数据。如果您只是通过按返回进入 C,则将数据写入共享首选项等常见位置,以便您可以从 A 访问

于 2012-06-12T03:47:44.803 回答
0

您可以使用Handler将数据从一个活动传递到另一个活动,或者您可以使用startActivityForResult(). 然后通过使用setResult(resultCode, data),您可以将额外的数据传递给可以在函数中访问的前一个活动onActivityResult(int requestCode, int resultCode, Intent data)

于 2012-06-12T03:48:11.307 回答
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");

并检查此链接

http://mobileorchard.com/android-app-development-using-intents-to-pass-data-and-return-results-between-activities/

于 2012-06-12T03:49:46.987 回答