私は3つのアクティビティActiviytA、ActivityB、ActivityCを使用しています。ActivityAにはonActivtResult関数があります。b/wiでActivitycからの結果が必要です。
2 に答える
とても簡単です。また、ActivityB内にonActivityResultを実装して、それをアクティビティAに戻すこともできます。
if(RESULT_OK)
{
//GET data passedback
Intent returnIntent = new Intent();
returnIntent.putExtra(your extra data);
setResult(RESULT_OK, returnIntent);
finish()
}
これは、私がいつもホームボタンの実装を使用する方法です。
よく理解できれば、ActivityAからActivityBを開き、次にActivityBからActivityCを開きます。ActivityAがActivityCから値を取得するようにします。
おそらく最も簡単な方法は、値を静的として保存し、クラスから直接読み取ることです。
StartActivityForResultを使用する場合(onActivityResultから結果を取得できるようにするため)、ActivityBにCから結果を受信させてから、ActivityBに結果をActivityAに渡すようにする必要があります。
ActivityAはResultsRecieverを実装します。次に、アクティビティBを開始し、呼び出し元のアクティビティ(ActivityA)を次のように取得します。
interface ResultsReciever{
executeSomething(ArrayList values);
}
インターフェイスを実装するActivityAを宣言します。
public class ActivityA extends Activity implements ResultsReciever
アクティビティBのonStartメソッドで:
ResultsReciever caller = (ResultsReciever)getCallingActivity();
次に、ActivityBはStartActivityForResult()を使用してActivityCを開始します。ActivityBのonActivityResultで、次のように呼び出すことができます。
caller.executeSomething(whatever);