3

我目前正在開發一個應用程序,該應用程序由管理多個片段的基本活動組成。其中一個片段是一個列表,當點擊某個項目時將啓動一個詳細信息活動。我希望當我點擊主頁按鈕(使用ABS)作爲應用程序導航回到列表片段,而是總是導航回我指定爲默認片段。正確的從片段到活動的導航

Base Activity 
    Frag1 - Default 
    Frag2 
    Frag3 -> DetailsActivity 

當從Home按鈕按下HomeActivity時,我想回到Frag3,而不是我去Frag1。

任何幫助將是偉大的。以下是我在詳細信息活動中處理正在按下的主頁按鈕的代碼。

主要活動:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // set the Above View 
    if (savedInstanceState != null) 
     mContent = getSupportFragmentManager().getFragment(savedInstanceState,    "mContent"); 
    if (mContent == null) 
     mContent = new HomeFragment(); 

    // set the Above View 
    setContentView(R.layout.content_frame); 
    getSupportFragmentManager() 
      .beginTransaction() 
      .replace(R.id.content_frame, mContent) 
      .commit(); 

    // set the Behind View 
    setBehindContentView(R.layout.menu_frame); 
    getSupportFragmentManager() 
      .beginTransaction() 
      .replace(R.id.menu_frame, new SlidingMenuFragment()) 
      .commit(); 

    // customize the SlidingMenu 
    getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
} 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    getSupportFragmentManager().putFragment(outState, "mContent", mContent); 
    super.onSaveInstanceState(outState); 
} 

public void switchContent(Fragment fragment) { 
    getSlidingMenu().showContent(); 

    mContent = fragment; 
    getSupportFragmentManager() 
      .beginTransaction() 
      .addToBackStack("test") 
      .replace(R.id.content_frame, fragment) 
      .commit(); 
} 

子活動:

@Override 
public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) { 
    switch (item.getItemId()) { 
     // Respond to the action bar's Up/Home button 
     case android.R.id.home: 
      NavUtils.navigateUpFromSameTask(this); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

回答

1

截取事件--home--詳細的活動,調用'finish()'。

在frag#3中執行'on activity result()'。

您將從詳細活動返回到frag3。

+0

但是,我能夠得到這個工作,似乎並不是最好的做法。我不期望細節活動的結果,所以我寧願不使用這種方法,除非它是唯一的方法。感謝您的訣竅,雖然它確實有效! – Nath5

+0

那麼看看使用frag3中的接口實際上返回事件frag#3.HOME上的BaseActivity,然後從Base啓動DetailActivity的Intent。詳細信息活動完成後,使用frag transactionManager在詳細信息後添加frag#3。 –

0

如何將您的片段ID傳遞給您的父級活動(基本活動)呢?

子活動:

@Override 
public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) { 
    switch (item.getItemId()) { 
     // Respond to the action bar's Up/Home button 
     case android.R.id.home: 
     // Retrieve this Activiy's parent Up intent 
     Intent upIntent = NavUtils.getParentActivityIntent(this); 
     // Add the required Intent extras as appropriate 
     upIntent.putExtra("KEY", id); 
     NavUtils.navigateUpTo(this, upIntent); 

      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

NavUtils.navigateUpFromSameTask(this)等同於調用navigateUpTo(sourceActivity, getParentActivityIntent (sourceActivity))