2014-09-05 64 views
0

我已經得到片段A→B→C→D。使用方法onCreateView的每個片段都在主Activity中更改了String變量。 一切工作正常從A到B或C或D,但是當我按下後退按鈕 - 例如從C到B我需要刷新MainActivity的變量爲正確的值。我怎樣才能做到這一點? onResume(),onStart(),當我回到以前的片段時,不會調用onCreateView。獲取當前可見片段Android

編輯,B C D是同一個類的片段,可以是片段,因爲我正在實現一個文件夾目錄,並帶有B C D子文件夾目錄。我不能使用我認爲的標籤,因爲我不知道我有多少片段。

回答

2

看看這個例子: https://stackoverflow.com/a/24042109/2413303

基本上,指定碎片構造函數中的資源ID:

public MyFragment() 
{ 
    super(); 
    titleId = R.string.drawer_myfragment_title; 
} 

添加如下界面(在編輯加):

public interface GetActionBarTitle 
{ 
    int getActionBarTitleId(); 
} 

返回這與接口:

public class MyFragment extends Fragment implements GetActionBarTitle 
{ 
    private int titleId; 

    @Override 
    public int getActionBarTitleId() 
    { 
     return titleId; 
    } 
} 

而在活動中,添加以下到onCreate()方法:

getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener() 
{ 
    public void onBackStackChanged() 
    { 
     int backCount = getSupportFragmentManager().getBackStackEntryCount(); 
     if (backCount == 0) 
     { 
      finish(); 
     } 
     else 
     { 
      Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.container); 
      mTitle = getString(((GetActionBarTitle) fragment).getActionBarTitleId()); 
      getSupportActionBar().setTitle(mTitle); 
     } 
    } 
}); 
+0

implements GetActionBarTitle給我錯誤,我不能使用它。 – 2014-09-08 10:24:10

+0

添加了接口代碼 – EpicPandaForce 2014-09-08 10:47:17

0

您可以在YourActivity中聲明方法進行刷新。

而在片段中只是施放了活動給你和調用方法。

例如,在YourActivity申報方法:

public void refreshMe(){ 
... 
} 

所以,在你的片段,您可以撥打:

((YourActivity)getActivity()).refreshMe(); 
+0

好的。我什麼時候可以調用這個方法? – 2014-09-05 13:46:52

+0

@ user3793870 \t in onAcivityCreated()例如 – Suvitruf 2014-09-05 13:54:48

相關問題