私は3つの活動をしています。A、B、および C. A は B を開始し、B は C を開始します。C のバックスタックから B を削除します。次に、C を終了する前に、C から A にデータを渡す必要があります。 C から A ?
5 に答える
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);
うまくいかない場合は、問題を教えてください。うまくいくはずだと思います。
クラスを作成し、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;
}
}
Intent by Intent to Go C from Aを開始すると、データをputExtra of intentに渡すことができます。Cに戻って押すだけの場合は、共有設定などの一般的な場所にデータを書き込んで、Aからアクセスできるようにします。
Handler
を使用して、あるアクティビティから別のアクティビティにデータを渡すか、 を使用して各アクティビティを開始できますstartActivityForResult()
。次に、を使用しsetResult(resultCode, data)
て、関数でアクセスできる前のアクティビティに余分なデータを渡すことができますonActivityResult(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");
そして、このリンクをチェックしてください