2012-04-16 10 views
0

現在私はインテントで作業中です。しかし、私はいくつかの問題があります。についてアンドロイドの意図の行動

私は2つのアプリAとBを持っています。Bのランチモードはアンドロイドです:launchMode = "singleTop"。

ここで、AからBへのインテントを渡したいと、「sdcard/Android」(ディレクトリパス)と言いました。その後、Aは終了し、Bは作成/再開/ onNewintentになります。最初に、Bはインテント文字列 "sdcard/Android"を受信します。これはまさに私が欲しいものです。

次に、ホームボタンをランチャーに押し込んでAを開き、新しいデータを「sdcard/Music」とBに渡します。ただし、問題が発生した場合、Bは文字列「sdcard/Music」を取得しませんBのインテントデータはまだ "sdcard/Android"です。

私は2回目にBにデータを渡すことを期待していますが、onNewintentメソッドはBで呼び出されます。何か問題はありますか? 2回目にBに正しいデータを渡すにはどうすればよいですか?

@Override 
public void onCreate(Bundle savedInstanceState) { 
    onNewIntent(getIntent()); 
} 

@Override 
public void onNewIntent(Intent intent) 
{ 
    Log.i("TAG", intent.getStringExtra("path")); 
} 

私はonNewIntentを上書きする必要があることを知っています。最初に、BはonCreateメソッドに入ります。 2回目に、私はonNewIntentメソッドに入ると思います。しかし、それはonResumedメソッドに入る..!

答えて

2

Activity Bのメソッドが初めて呼び出されるのではなく、Activity Bが起動された2回目以降にのみ呼び出されます。

あなた「再書き込み」、次のような何かを行うことによって、元のIntent ...

@Override 
protected void onNewIntent(Intent intent) { 
    setIntent(intent); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    handleIntent(getIntent()); 
} 

private void handleIntent(Intent intent) { 
    // The intent parameter here will be the original `Intent` the first 
    // time Activity B is started. It will be the new Intent after that 
    // as onNewIntent(...) re-writes it with the call to setIntent(...) 
} 
+0

私は、私の記事に感謝を何かを置くことができます。 – s011208

+0

問題は、BがonNewIntentメソッドに入ることはありません!どうして? – s011208

+0

'onNewIntent(...)'を直接呼び出さず、 'IntInt'を渡すために' getIntent() 'を使わないでください。これはあなたがしたくないものです。メソッドonNewIntent(...)はAndroidフレームワークによって自動的に呼び出されるため、あなた自身で呼び出すべきではありません。 – Squonk

関連する問題