2

I have been working on this navigation drawer with toolbar.Now am stuck with the click listener. When i click the items in the drawer it does nothing. My class is fragment. Here its the code. package com.vivek.ss;

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;

import com.mikepenz.materialdrawer.Drawer;
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
import com.mikepenz.materialdrawer.model.SecondaryDrawerItem;
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;


public class MainActivity extends ActionBarActivity {

   private BaseFragment mBaseFragment;
   private int mSelectedFragment;
   private static String BUNDLE_SELECTEDFRAGMENT = "Selected";
   private static final int CASE_START = 0;
   private static final int CASE_VIEW = 1;


    private Drawer.Result result = null;

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(BUNDLE_SELECTEDFRAGMENT , mSelectedFragment);
    }


    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Toolbar toolbar;

        toolbar = (Toolbar)findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        if (savedInstanceState != null) {
            mSelectedFragment = savedInstanceState.getInt(BUNDLE_SELECTEDFRAGMENT);
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            if (fragmentManager.findFragmentById(R.id.frame_container) == null)
                mBaseFragment = selectFragment(mSelectedFragment);

        }

        result = new Drawer().withActivity(this).withToolbar(toolbar).withActionBarDrawerToggle(true).withHeader(R.layout.header)
                .addDrawerItems(new PrimaryDrawerItem().withName(R.string.primaryfirst)

                        , new PrimaryDrawerItem().withName(R.string.primarysecond),
                        new SecondaryDrawerItem().withName(R.string.secondaryfirst)


                ).withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {

                   @Override
                   public void onItemClick(AdapterView<?> adapterView, View view, int position, long id, IDrawerItem iDrawerItem) {
                       if (iDrawerItem != null) {

                           if (iDrawerItem instanceof PrimaryDrawerItem) {
                               toolbar.setTitle(((PrimaryDrawerItem) iDrawerItem).getNameRes());
                               mBaseFragment = selectFragment(position);
                               mSelectedFragment = position;
                           }


                       }



                   }

  }).build();




    }

    private BaseFragment selectFragment(int position) {


        BaseFragment baseFragment = null;

        switch (position) {
            case CASE_START:
                baseFragment = new TestFragment();
                break;
            case CASE_VIEW:
                baseFragment = new TestFragment();
                break;
        }
        return baseFragment;
    }


 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }


    }
Vivek_Neel
  • 1,343
  • 1
  • 14
  • 25

1 Answers1

0

clicking on the items it changes the action bar title correspondingly. But my fragment wont start

To display Fragment on onItemClick need to use replace or add methods of FragmentTransaction. start Fragment as from onItemClick method:

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frame_container, mBaseFragment);  
fragmentTransaction.addToBackStack(null);
// Commit the transaction
fragmentTransaction.commit();  
ρяσѕρєя K
  • 132,198
  • 53
  • 198
  • 213