2017-02-13 4 views
0

私はアンドロイドアプリケーションAとアンドロイドアプリケーションBを持っています。 アプリケーションBからアプリケーションBを呼び出してアプリケーションBからデータを取得して、これは以前に開かれたものです。別のアプリケーションを呼び出して、以前開いていた同じアプリケーションに戻す

アプリケーションA

Intent app = new Intent(Intent.CATEGORY_LAUNCHER); 
app.setComponent(new ComponentName("com.abc.applicationA","com.abc.applicationA.MainActivity")); 
startActivity(applicationA); 

アプリケーションB

Intent j = new Intent(Intent.CATEGORY_LAUNCHER); 
j.setComponent(new ComponentName("com.abc.applicationB","com.abc.applicationB.MainActivity")); 
j.putStringArrayListExtra("Data", data); //data is array list 
startActivity(j); 

しかし、上記の実装のためにはApplicationAがApplicationBをを起動

再度ApplicationBをiが戻ったときにapplciationAがlaunched.soでApplicationAを一度に多くの時間を起動したとき、私2回目と呼ばれるapplicationAと1回目にapplicationBとapplicationAが呼び出されます。

私の意図は、applicationAが起動してからapplicationBに移動し、いくつかのデータを取得して、同じアプリケーションに戻ることです。

+0

AIDLとサービスの使い方はどうですか? –

+1

'startActivityForResult' –

答えて

0

クリケットが言うように、startActivityForResultは正解です。アクティビティAでアクティビティBを開くには、アクティビティBでstartActivityForResultを呼び出します。アクティビティBで終了すると、setResult関数が呼び出され、次にfinish()が呼び出されます。 ApplicationAを、

+0

私はapplicationAからアプリケーションBに移動して、applicationAを2回呼び出すことなくapplicationAを取得できますが、私もできないapplicationBにapplicationAにアクセスしたいそれ。 – RShenoy

+0

「私はまた、applicationBのapplicationAにアクセスしたい」という意味を理解していません。あなたの質問の私の解釈は、あなたがこれをしたいということです... –

+0

アクティビティーA in App AからアクティビティーBをApp Bで開始します。アプリケーションBのアクティビティBで作業が終了すると、setResultが呼び出され、finish()が呼び出され、App AのアクティビティAに必要な結果が返されます。 –

0

startActivityForResult代わりのstartActivityを使用してみてください。

int REQUEST_CODE = *any Integer as request code* 
Intent app = new Intent(Intent.CATEGORY_LAUNCHER); 
app.setComponent(new ComponentName("com.abc.applicationB","com.abc.applicationB.MainActivity")); 
startActivityForResult(applicationA,REQUEST_CODE); 

またsetResult()方法を使用して、ApplicationBをではonActivityResult

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == REQUEST_CODE) { 
     //check the resultCode and data would contain the extras 
    } 
} 

をオーバーライドします。

+0

私はこれを変更する必要があります 'app.setComponent(新しいComponentName(" com.abc.applicationB "、" com.abc.applicationB.MainActivity ")); ' – RShenoy

+0

私はアプリケーションAからアプリケーションBに移動して戻ることができるapplicationAを取得せずに2回呼び出されますが、私もそれを行うことができませんapplicationBのapplicationAにアクセスしたいです。 – RShenoy

関連する問題