2014-11-21 47 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