2012-04-12 11 views
0

アクティビティが2つあります(AB)。アクティビティで別のアクティビティを停止できません。

Aが意図と要求コードとB呼び出し - AIに

finishActivity(123); 
finish(); // finish itself 

をしたので、後で私は、Bを停止してから自分自身にしたい...

startActivityForResult(i,123); 

を...しかし、 Bは止まらない!しかし、onStopとonDestroyのすべてでブレークポイントを設定し、デバッガでステップバイステップを実行すると、すべてが完全に動作し、両方のアクティビティが終了します。 (これはタイミングや競合状態を示唆している)

しかし、私はコメントを出した場合にAの仕上げ()を...

finishActivity(123); 
// finish(); // finish itself 

Bが終了していますが、その仕上がりが奪われているので、Aにはありません。 1つのアクティビティで作成した別のアクティビティを完成させ、それを完成させる正しい方法は何ですか?

ありがとうございます。

+0

結果のためにBを開始するのであれば、なぜそれ自体を終了させ、その結果をAに送り返したくないのですか?タイミングについて正しい場合は、runnableとpostDelayedを使用して、finsh()を0.5秒遅らせるか、必要なものを – FoamyGuy

+0

からfinishActivity(123)を使用してAのインスタンスを保存してみてください(推奨されません。 )を呼び出し、B内のメソッドを呼び出して閉じます。その結果、 – L7ColWinters

+0

というonActivityResultを取得します。これは、Android搭載デバイスがPCベースの産業プロセス用のリモートコントロールである産業用アプリケーション向けです。 PC上のメッセージは、PCとAndroidデバイスの両方に表示され、ユーザーはどちらかから対話または却下できます。私が記述しているのは、メッセージがPC上で処理された場所で、Androidデバイスがそれを却下する必要があるためです。 – user316117

答えて

3

これが動作するかどうかを参照してください:

finishActivity(123); 
runOnUiThread(new Runnable() { 
    public void run() { 
     finish(); 
    } 
}); 

を、私はこのことをお勧め理由は、私がfinish()への呼び出しがfinishActivity(123)にそのことを行う機会を与えていないと考えていることです。 runOnUiThreadを呼び出すと、finish()への呼び出しは、UIメッセージキューを介して次のループで行われます。

+0

BINGO !!あなたダ男! – user316117

関連する問題