2013-07-25 13 views

risposta

37

Creare un metodo in MainActivity che contiene il drawerLayout.

public void open() 
{ 
    mDrawerLayout.openDrawer(Gravity.LEFT); 
} 


e verso il frammento In oncreateView() Metodo desideri del nuovo tasto di programmazione aggiungere pulsante nel vostro layout di Root gonfiato. Il tuo frammento ha pulsante
muggito ho modificato frammento provare

public static class PlanetFragment extends Fragment { 
    public static final String ARG_PLANET_NUMBER = "planet_number"; 

    public PlanetFragment() { 
     // Empty constructor required for fragment subclasses 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_planet, container, false); 
     int i = getArguments().getInt(ARG_PLANET_NUMBER); 
     String planet = getResources().getStringArray(R.array.planets_array)[i]; 

     int imageId = getResources().getIdentifier(planet.toLowerCase(Locale.getDefault()), 
         "drawable", getActivity().getPackageName()); 
     ((ImageView) rootView.findViewById(R.id.image)).setImageResource(imageId); 
     getActivity().setTitle(planet); 
     RelativeLayout root=(RelativeLayout)rootView.findViewById(R.id.root); 
     Button button=new Button(getActivity());    
     LayoutParams params=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
     button.setLayoutParams(params); 
     params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
     params.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
     button.setText("openDrawer"); 
     root.addView(button); 

     button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       ((MainActivity)getActivity()).open(); 
      } 
     }); 
     return rootView; 
    } 
    } 
} 


si può provare questo codice nel tuo frammento ..

+0

ma come si aggiunge il pulsante? –

+0

In risposta non ho aggiunto il pulsante nell'attività ma nel frammento, quindi puoi accedere a Drawer da qualsiasi frammento e da qualsiasi vista fai clic sull'evento chiamando il metodo activity open(). – Pravin

+0

grazie, che ha fatto il lavoro –

12

Crea il tuo pulsante in onCreate(Bundle) metodo:

Button button = new Button(this); 

Trova il tuo DrawerLayout:

mDrawerLayout = (DrawerLayout) findViewById(R.id.my_drawer_layout_id); 

Imposta un OnClickListener su questo pulsante:

button.setOnClickListener(new OnClickListener() { 
    public void onClick(View view) { 
     mDrawerLayout.openDrawer(Gravity.LEFT); 
    } 
) 

Questo vi darà un cassetto vuoto. Se si dispone di un View che si desidera inserire all'interno del cassetto, sostituire:

mDrawerLayout.openDrawer(Gravity.LEFT); 

con:

mDrawerLayout.openDrawer(myCustomView); 

Se si desidera che il pulsante per commutare il cassetto (chiudere il cassetto se aprire o , aprirlo se chiuso) utilizzare il seguente OnClickListener:

button.setOnClickListener(new OnClickListener() { 
    public void onClick(View view) { 
     if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) { 
      mDrawerLayout.closeDrawer(Gravity.LEFT); 
     } else { 
      mDrawerLayout.openDrawer(Gravity.LEFT); 
     } 
    } 
) 

Se si utilizza una visualizzazione personalizzata, utilizzare questo OnClickListener:

button.setOnClickListener(new OnClickListener() { 
    public void onClick(View view) { 
     if (mDrawerLayout.isDrawerOpen(myCustomView)) { 
      mDrawerLayout.closeDrawer(myCustomView); 
     } else { 
      mDrawerLayout.openDrawer(myCustomView); 
     } 
    } 
) 
+0

il pulsante è ancora da nessuna parte –

+0

@SartherisStormhammer Puoi pubblicare il file xml di layout? Quello che usi in 'setContentView()'? – Vikram

Problemi correlati