一度

2017-06-29 7 views
0

が、私は基本的には例えば、それに活動して行為を起動する必要があり、コードのこの部分を持って開いた時にAndroidの活動や行為を起動、そのタイトルを設定現在の前景アクティビティの参照を保持します。 これは、アプリ内の各アクティビティのonResume()に設定されます。一度

このコードを実行すると、このメソッドが終了するとアクティビティが起動されます。これにより、2番目のコマンドは役に立たなくなります。新しい起動済みのタイトルではなく、以前のアクティビティのタイトルが設定されます。タイトルの設定が助けになる前に遅延を追加する。

デバッグしたとき、2番目の コマンドのコードが、必要な新しいアクティビティのonCreate()の前に(両方の間で設定した遅延にかかわらず)一貫して呼び出されていることがわかりました。私の質問はなぜですか?

おかげ

EDIT - 私の必要性は、より良い説明:

を私は新しい活動にデータを渡す方法を知っています。私は、この特定のタイミング問題の理由を知ることに興味がありました。なぜこのコードブロック/メソッドの終了後にアクティビティが常に開始されるのでしょうか。

私の設計によると、このメソッドは、URL実行(URLマッチャーに応じて特定のインテントに変換される)のみを実行する別のモジュールにあり、コールバックがすなわち、aアクティビティが開始された後に、urlの実行。

この例では、コールバックは実際のアクティビティのタイトルを設定しようとするメソッドへの呼び出しです(コールバックメソッドはappモジュールにあり、引数として "url executor"モジュールに渡されます)。

このような一般的なアプローチの必要性を説明したので、この「アクティビティはまだ始まったことはありません」という問題に陥ることなく、どうやってやるのかというヒントを教えてください。おかげさまで

+1

起動アクティビティはAndroidの非同期操作です - 'startActivity() 'を呼び出すだけで、将来予定されているアクティビティがスケジュールされます。データをアクティビティに渡すか、開始したアクティビティを取得して元のアクティビティに戻す必要があります。 – adelphus

答えて

1

あなたは私があなたのIntentOnCreate

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.xxxxxxxx); 
    Intent i = getIntent(); 
    setTitle(i.getStringExtra("title"); 

新しい活動中の余分な内部の余分を置くために、その取得に伴うExtraを渡すことをお勧め意思によって開始された活動で何かを変更したい場合Intent use intent.putExtra("title", "newTitle");

+0

ありがとうございますが、私はインテントのエクストラを使って新しいアクティビティにデータを渡す方法を知っています。私は私の必要性をよりよく説明するために質問を更新しました。 – TheCodeFather