2014-11-21 63 views
0

我有mDrawerToggle = new ActionBarDrawerToggle我無法更改片段中的對象

mDrawerToggle = new ActionBarDrawerToggle(
      this, 
      mDrawerLayout, 
      R.drawable.ic_drawer, 
      R.string.drawer_open, 
      R.string.drawer_close 
    ) { 
     public void onDrawerClosed(View view) { 
      getSupportActionBar().setTitle(mTitle); 
      supportInvalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 

     public void onDrawerOpened(View drawerView) { 
      getSupportActionBar().setTitle("Меню"); 
      supportInvalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 
    }; 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 

創建活動時,我經過一番,我在我需要安裝mDrawerToggle.setDrawerIndicatorEnabled(true);片段執行的操作的安裝mDrawerToggle.setDrawerIndicatorEnabled(false);。但我不能從一個片段中引用它。

public class AuthDialog extends Fragment implements View.OnClickListener { 
... 
     @Override 
     protected void onPostExecute(String s) { 
      if (response){ 
       //then I need to set mDrawerToggle.setDrawerIndicatorEnabled(true); 
      }else{ 
       ... 
      } 
     } 
} 

回答

2

喜歡ridsatrio說。然後您從Fragment這樣調用方法:

if(getActivity() != null){ 
    ((YourActivityName)getActivity()).enableDrawerToggle(); 
} 
+0

愚蠢的我,是的,我應該提到的方式來稱呼它。順便說一下,使用'getActivity()'時要小心,因爲它有時會返回'null'。 – ridsatrio 2014-11-21 12:10:10

+0

是的,這是事實。檢查null以確保。 – Carnal 2014-11-21 12:11:06

+0

工作!非常感謝你 !!! – 2014-11-21 12:13:22

0

讓你Activity的公共方法,以使DrawerToggle。看起來像這樣的東西:

public void enableDrawerToggle() { 
    mDrawerToggle.setDrawerIndicatorEnabled(true); 
} 

..然後從您的Fragment調用它。

+0

我試圖這樣做,但這種方法從片段並不明顯。如果你讓它成爲一個靜態的錯誤。我的Activitine MyActivity擴展了ActionBarActivity – 2014-11-21 12:04:09

+0

「不明顯」是什麼意思?如果該方法設置爲「public」,則應該從字面上隨處訪問。 – ridsatrio 2014-11-21 12:05:48

+0

但無法訪問。它公開 – 2014-11-21 12:07:40

相關問題