androidandroid-actionbarandroid-actionbar-compatdrawertoggle

I have problems ActionBarDrawerToggle


Recently I was using in my App this feature. But, using the ActionBarDrawerToggle a new app, I went unused error in that function. So I implemented import android.support.v7.app.ActionBarDrawerToggle; But now the code does not work for me.

public class MainActivity extends ActionBarActivity {
private ListView drawerList;
private String[] drawerOptions;
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle drawerToggle;
private Fragment[] fragments = new Fragment[]{
                                               new MainFragment(),
                                               new AcordesFragment(),
                                               new AfinadorFragment(),
                                               new AboutFragment(),
                                               new ExitFragment(),
};

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

    drawerList = (ListView) findViewById(R.id.leftDrawer);
    drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
    drawerOptions = getResources().getStringArray(R.array.drawer_options);

    drawerList.setAdapter(new ArrayAdapter<String> (this,
                                                    R.layout.drawer_list_item,
                                                    drawerOptions));

    drawerList.setItemChecked(0, true);
    drawerList.setOnItemClickListener(new DrawerItemClickListener());

    drawerToggle = new ActionBarDrawerToggle(this,
                                            drawerLayout,
                                            R.drawable.ic_drawer,
                                            R.string.drawer_open,
                                            R.string.drawer_close){
                                                                    public void onDrawerClosed(View view){
                                                                        ActivityCompat.invalidateOptionsMenu(MainActivity.this);
                                                                    }
                                                                    public void onDrawerOpened(View drawerView){
                                                                        ActivityCompat.invalidateOptionsMenu(MainActivity.this);
                                                                    }
                                             };

    drawerLayout.setDrawerListener(drawerToggle);

    FragmentManager manager = getSupportFragmentManager();
    manager.beginTransaction()
            .add(R.id.contentFrame, fragments[0])
            .add(R.id.contentFrame, fragments[1])
            .add(R.id.contentFrame, fragments[2])
            .add(R.id.contentFrame, fragments[3])
            .add(R.id.contentFrame, fragments[4])
            .hide(fragments[1])
            .hide(fragments[2])
            .hide(fragments[3])
            .hide(fragments[4])
            .commit();

    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayHomeAsUpEnabled(true);
    actionbar.setHomeButtonEnabled(true);

    if( getIntent().getBooleanExtra("Exit me", false)){
        finish();
        return; // add this to prevent from doing unnecessary stuffs
    }

}

The error is in the following code:

    drawerList.setOnItemClickListener(new DrawerItemClickListener());

    drawerToggle = new ActionBarDrawerToggle(this,
                                            drawerLayout,
                                            R.drawable.ic_drawer,
                                            R.string.drawer_open,
                                            R.string.drawer_close){
                                                                    public void onDrawerClosed(View view){
                                                                        ActivityCompat.invalidateOptionsMenu(MainActivity.this);
                                                                    }
                                                                    public void onDrawerOpened(View drawerView){
                                                                        ActivityCompat.invalidateOptionsMenu(MainActivity.this);
                                                                    }
                                             };

Surely Be That it has changed the syntax When using the ActionBarDrawerToggle but can not find.

Thank you very much for everything


Solution

  • Thank you very much for everything. The error has been resolved. Thank you very much to @hata and @Spring Breaker

    Here is the corrected code so that other people can see it

    public class MainActivity extends ActionBarActivity {
    private ListView drawerList;
    private String[] drawerOptions;
    private DrawerLayout drawerLayout;
    private ActionBarDrawerToggle drawerToggle;
    private Fragment[] fragments = new Fragment[]{
                                                   new MainFragment(),
                                                   new AcordesFragment(),
                                                   new AfinadorFragment(),
                                                   new AboutFragment(),
                                                   new ExitFragment(),
    };
    
    
    private class DrawerItemClickListener implements ListView.OnItemClickListener {
    
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
        }
    };
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        drawerList = (ListView) findViewById(R.id.leftDrawer);
        drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
        drawerOptions = getResources().getStringArray(R.array.drawer_options);
    
        drawerList.setAdapter(new ArrayAdapter<String> (this,
                                                        R.layout.drawer_list_item,
                                                        drawerOptions));
    
        drawerList.setItemChecked(0, true);
    
        drawerList.setOnItemClickListener(new DrawerItemClickListener());
    
        drawerToggle = new ActionBarDrawerToggle(this,
                                                drawerLayout,
                                                //R.drawable.ic_drawer,
                                                R.string.drawer_open,
                                                R.string.drawer_close){
                                                                        public void onDrawerClosed(View view){
                                                                            ActivityCompat.invalidateOptionsMenu(MainActivity.this);
                                                                        }
                                                                        public void onDrawerOpened(View drawerView){
                                                                            ActivityCompat.invalidateOptionsMenu(MainActivity.this);
                                                                        }
                                                 };
    
        drawerLayout.setDrawerListener(drawerToggle);