2014-11-17 159 views
1

我有一個主要活動(活動A),它有一個框架佈局,顯示3個片段,即片段A,片段B和片段C.我有另一個活動,它有一個按鈕。當我點擊那個按鈕時,我想讓它打開片段B.我如何打開屬於另一個活動的片段。我已經嘗試了以下代碼如何從主父活動以外的活動啓動片段?

android.app.Fragment fragment = new ImageGridFragment(); 
      FragmentManager fragmentManager = getFragmentManager(); 
      fragmentManager.beginTransaction() 
        .replace(R.id.frame_container, fragment).commit(); 

但是這似乎只有在您更改主要父級片段中的片段時纔有效。我如何克服這一點,並顯示另一個屬於另一個活動的片段?

+0

我認爲你必須通過一些識別數據,以活動A等各個片段的鹼基將被添加到框架佈局。 –

+0

是否要在MainActivity或第二個活動中打開片段B? – rickyalbert

+0

@rickyalbert在mainActivity –

回答

2

你需要傳遞給你的MainActivity一些數據,讓它知道它必須打開FragmentB。例如,在您的secondActivity

Intent openFragmentBIntent = new Intent(this, MainActivity.class); 
openFragmentBIntent.putExtra(OPEN_FRAGMENT_B, SOME_VALUE); 
startActivity(openFragmentBIntent); 

,並在您的MainActivity onCreate使用:

if (getIntent().hasExtra(OPEN_FRAGMENT_B) 
{ 
    Fragment fragment = new ImageGridFragment(); 
    FragmentManager fragmentManager = getFragmentManager(); 
    fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit(); 
} 
+0

謝謝@rickyalbert它的工作.. :)但我假設除了這些這些沒有其他方式解決這個問題? –

+0

我認爲這是實現這一目標的更快,最簡單的方法。在Android編程中,如果您必須與Activity進行通信,則必須使用調用它的Intent。 – rickyalbert

-1

您需要打開活動A並傳遞一個參數(例如通過額外),以便能夠啓動/打開正確的片段。

@Override 
protected void onStart() 
{ 
    super.onStart(); 

    if (getIntent() != null && getIntent().hasExtra("something")) { 

    } 
}