2013-12-11 61 views
0

我的應用程序是這樣的:的Android:開放活動數據與TabHost

Tabhost:

  • MapViewActivity
  • ListViewActivity - > DetailActivity

在DetailActivity有一個按鈕,在MapViewActivity中顯示一些東西。如何關閉DetailView並打開第一個選項卡其他數據,而不會丟失選項卡層次結構。

我的嘗試:

Intent intent = new Intent(this, TabsActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
intent.putExtra(DATA_KEY, "some-data"); 
startActivity(intent); 

但是在在的onResume是TabsActivity無法從

getIntent(); 

檢索數據,因此,另一種選擇是設置一個監聽器和前完成活動,通知聽衆。但問題在於PutExtra不會將類作爲一個值。

我覺得我不在正確的軌道上。所以你有什麼建議?

回答

0

我最終使用以下:

ListViewActivity我使用startActivityForResult();像:

Intent intent = new Intent(activity, DetailActivity.class); 
startActivityForResult(intent, REQUEST_CODE); 

當我點擊一個按鈕時,DetailActivity將數據發送回ListViewActivity

Intent intent = new Intent(); 
intent.putExtra(KEY_ID, id); 
setResult(RESULT_OK, intent); 
finish(); 

然後我接收數據中使用onActivityResult ListViewActivity()

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(requestCode == TrackDetailsActivity.REQUEST_CODE){ 
     String objectId = data.getStringExtra(DetailActivity.KEY_ID); 
     if (objectId != null) { 
      CustomTabActivity tabs = (CustomTabActivity)getParent(); 
      tabs.getTabHost().setCurrentTabByTag(MapViewActivity.TAG); 
      tabs.setObject(objectId); 
     } 
    } 

    super.onActivityResult(requestCode, resultCode, data); 
} 

正如你所看到的,我將結果存儲在我的CustomTabActivity,稍後MapViewActivity使用此屬性。