2010-12-03 16 views
3

インテント。このアクティビティから、このリストに何かを追加するアクションを実行できます(アクティビティB)。TabActivityパスエキストラは、私は3つのアクティビティを持って

アクティビティB - これは、ウェブサイトにデータを追加するアクティビティです。このアクティビティが正常に完了すると、アクティビティAにそのリストをリフレッシュするよう指示する必要があります。

活動T - アクティビティA.が含まれていTabHost

私の問題がある:Bをリフレッシュするために活動Aを通知する必要がありますが、私はしたいので、その意図は、活動Tでなければなりません

活動

0123:TabHostは私が仲介者としてTabHostを使用し、ちょうど彼らがそうのように、設定された場合のアクティビティAに至るまでのエキストラを渡すと考えていた活動A.

//ActivityB.class 
Intent myIntent = new Intent(v.getContext(), ActivityT.class); 
myIntent.putExtra("target", "ActivityA"); 
myIntent.putExtra("refreshData", true); 
startActivityForResult(myIntent, 0); 

を表示します

//ActivityT.class 
Bundle extras = getIntent().getExtras(); 

// Create an Intent to launch an Activity for the tab (to be reused) 
intent = new Intent().setClass(this, ActivityA.class); 

// Check to see if we want to pass our bundle through to the activity 
if (extras != null && extras.getString("target").equals("activityA")) { 
    intent.putExtras(extras); 
} 

// Initialize a TabSpec for each tab and add it to the TabHost 
spec = tabHost.newTabSpec("Tab1").setIndicator("Tab1", 
      res.getDrawable(R.drawable.ic_tab_tab1)).setContent(intent); 
tabHost.addTab(spec); 

これは、タブを別のタブに変更して元に戻すと、エクストラがもう一度やり直されるということを除いて、素晴らしいことです。これは、TabActivityがタブ変更時に再作成されず、したがってエキストラが常に子インテントに渡されるためです。

アクティビティAのみにアクティビティBからリフレッシュするように指示できますが、それでも表示するにはTabHostが表示されますか?

+0

ブロードキャストを使用します。 – Falmarri

+0

このような小さな仕事のために放送は少し重労働ではありませんか?彼らは通常、他のアプリやサービスによって放送されたイベントや意図を聞くのに使われていませんか? –

答えて

0

もっとも洗練されたソリューションではないかもしれませんが、私はActivityBから設定できるActivityAクラスの静的データメンバーを使用しました。

//ActivityA.class 

public static boolean refreshData = false; 

public void onResume() { 
    if (refreshData) { 
     mRefreshData(); 
     refreshData = false; 
    } 
} 

//ActivityB.class 

ActivityA.refreshData = true; 
Intent myIntent = new Intent(v.getContext(), ActivityT.class); 
startActivityForResult(myIntent, 0); 

私はこの種のことをするより良い方法があるかどうか知りたいです!

0

私はこの問題を解決し、TabHost、TabActivity、およびTabWidgetのコードをコピーし、この問題を解決するために私のニーズに合わせてカスタマイズしました。それは私が誇りに思っていることではありませんが、それはトリックでした。

他のことをやりやすくするために少し微調整を加えたので、やや役立ちました。

+1

ブロードキャストよりも簡単ですか? – Falmarri

関連する問題