2015-04-16 64 views
0

我有導航抽屜活動。我只需點擊操作欄中的主頁按鈕即可打開導航抽屜。通過圖片打開導航抽屜點擊

我想知道是否可以通過單擊的ImageView打開它,這將是一個片段,以及如何做到這一點。

謝謝。

===== 編輯:

我創造了我的活動向導,所以我必須在MainActivity,佔位符活動(內容)和NavigationDrawerActivity(用於動作條和抽屜)。

在MainActivity的onCreate()中,我有: setContentView(R.layout.activity_main);

   //Cria menu de navegação 
       mNavigationDrawerFragment = (NavigationDrawerFragment) 
      locationmanager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
        getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); 
       mTitle = getTitle(); 
       mDrawerLayout= mNavigationDrawerFragment.getmDrawerLayout(); 

       // Configura menu de navegação 
       mNavigationDrawerFragment.setUp(
         R.id.navigation_drawer, 
         (DrawerLayout) findViewById(R.id.drawer_layout)); 

佔位符片段,我有:

rootView = inflater.inflate(R.layout.fragment_main, container, false); 
       ImageView imageView = (ImageView) rootView.findViewById(R.id.logoInicio); 
       imageView.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Log.i("Image click", "Clicked"); 
         if (main.mNavigationDrawerFragment!=null){ 
          if (!main.mNavigationDrawerFragment.isDrawerOpen()) { 
           main.mDrawerLayout.openDrawer(main.mydrawer); 
          } 
         } 
        } 
       }); 

的navigationDrawer片段就像是精靈左側。

這是我的堆棧跟蹤:

FATAL EXCEPTION: main 
    Process: workshopee.ct.ufrn.br.ssmonitor, PID: 15902 
    java.lang.NullPointerException 
      at workshopee.ct.ufrn.br.ssmonitor.PlaceholderFragment$2.onClick(PlaceholderFragment.java:144) 
      at android.view.View.performClick(View.java:4456) 
      at android.view.View$PerformClick.run(View.java:18462) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5086) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
      at dalvik.system.NativeStart.main(Native Method) 

回答

1

是的,它是可能的。在按鈕點擊使用: ((YourActivityWithDrawer)getActivity()).drawerLayout.openDrawer(your_drawer);

其中:

  • YourActivityWithDrawer是你含Activity抽屜,

  • drawerLayout是你DrawerLayout對象

  • your_drawer是實際的抽屜對象。

方法被描述here

+0

您還可以使用'drawerLayout.openDrawer(Gravity.LEFT)',或任何你在你的抽屜的佈局使用重力。 – FMontano

+0

同意但通過特定抽屜的命名視圖看起來更具可讀性。 – questioner

+0

請參閱編輯。 – MCGBra

0

我在MainActivity創建這兩個全局變量:

DrawerLayout drawerLayout; 
int fragmentId; 

MainActivity的onCreate()看起來像這樣:

的setContentView(R.layout.activity_main );

   //Cria menu de navegação 
       mNavigationDrawerFragment = (NavigationDrawerFragment) 
         getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); 
       mTitle = getTitle(); 

       fragmentId = R.id.navigation_drawer; 
       drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
       // Configura menu de navegação 
       mNavigationDrawerFragment.setUp(
         fragmentId, 
         drawerLayout); 

最後,我的佔位符片段:

rootView = inflater.inflate(R.layout.fragment_main, container, false); 
       ImageView imageView = (ImageView) rootView.findViewById(R.id.logoInicio); 
       imageView.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         if (main.mNavigationDrawerFragment!=null){ 
          if (!main.mNavigationDrawerFragment.isDrawerOpen()) { 
           main.drawerLayout.openDrawer(getActivity().findViewById(main.fragmentId)); 
          } 
         } 
        } 
       });