2013-07-25 20 views

Odpowiedz

37

Utwórz metodę w MainActivity, która zawiera twoją szufladęLayout.

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


iz fragmentu W oncreateView() metody, jak chcesz nowy przycisk programowo dodać przycisk w katalogu głównym zawyżone układzie. Twój fragment ma przycisk
ryk I zmodyfikowany fragment spróbować

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; 
    } 
    } 
} 


Można spróbować tego kodu w swoim fragmencie ..

+0

ale jak dodać przycisk? –

+0

W odpowiedzi nie dodałem przycisku w działaniu, ale w fragmencie, więc można uzyskać dostęp do szuflady z dowolnego fragmentu i dowolnego zdarzenia kliknięcia widoku, wywołując metodę open(). – Pravin

+0

dziękuję, że wykonano zadanie –

12

Utwórz przycisk onCreate(Bundle) metody:

Button button = new Button(this); 

Znajdź twój DrawerLayout:

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

ustawić OnClickListener tego przycisku:

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

To daje pustą szufladę. Jeśli masz View które chcesz umieścić w szufladzie, należy wymienić:

mDrawerLayout.openDrawer(Gravity.LEFT); 

z:

mDrawerLayout.openDrawer(myCustomView); 

Jeśli chcesz przycisk, aby przełączyć szufladę (zamknij szufladę jeśli jej otwarty lub , otwórz go, jeśli jego zamknięty) używać następujących OnClickListener:

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

Jeśli używasz widoku niestandardowego, użyj tego OnClickListener:

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

przycisk wciąż nie jest widoczny. –

+0

@SartherisStormhammer Czy umieścisz swój plik xml układu? Ten, który używasz w 'setContentView()'? – Vikram

Powiązane problemy