Java tutorial
package com.ccjeng.weather.view.activity; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.NavigationView; import android.support.v4.app.FragmentTransaction; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.MenuItem; import android.view.View; import com.ccjeng.weather.R; import com.ccjeng.weather.view.GoogleApiClientProvider; import com.ccjeng.weather.view.base.BaseActivity; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.location.places.Places; import com.mikepenz.aboutlibraries.Libs; import com.mikepenz.aboutlibraries.LibsBuilder; import butterknife.BindView; import butterknife.ButterKnife; public class MainActivity extends BaseActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, GoogleApiClientProvider { private final String TAG = this.getClass().getSimpleName(); @BindView(R.id.toolbar) Toolbar toolbar; @BindView(R.id.drawerlayout) DrawerLayout drawerLayout; @BindView(R.id.navigation) NavigationView navigation; private ActionBarDrawerToggle actionBarDrawerToggle; private GoogleApiClient googleApiClient; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); setSupportActionBar(toolbar); navDrawer(); if (savedInstanceState == null) { FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction(); ft.add(R.id.fragment, new CitiesFragment(), null); ft.commit(); } buildGoogleApiClient(); } @Override protected void onStart() { super.onStart(); googleApiClient.connect(); } @Override protected void onStop() { if (googleApiClient.isConnected()) { googleApiClient.disconnect(); } super.onStop(); } protected synchronized void buildGoogleApiClient() { googleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this, 0, this) .addApi(Places.GEO_DATA_API).addConnectionCallbacks(this).addOnConnectionFailedListener(this) .build(); } @Override public void onConnected(@Nullable Bundle bundle) { Log.i(TAG, "Connection started"); } @Override public void onConnectionSuspended(int i) { Log.i(TAG, "Connection suspended"); } @Override public GoogleApiClient getApiClient() { return googleApiClient; } @Override public void onConnectionFailed(@NonNull ConnectionResult result) { if (result.getErrorMessage() != null) { Log.e(TAG, result.getErrorMessage()); } } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); actionBarDrawerToggle.onConfigurationChanged(newConfig); } private void navDrawer() { navigation.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { //Checking if the item is in checked state or not, if not make it in checked state if (menuItem.isChecked()) menuItem.setChecked(false); else menuItem.setChecked(true); //Closing drawer on item click drawerLayout.closeDrawers(); switch (menuItem.getItemId()) { case R.id.navSetting: startActivity(new Intent(MainActivity.this, SettingsActivity.class)); break; case R.id.navAbout: new LibsBuilder().withActivityStyle(Libs.ActivityStyle.LIGHT_DARK_TOOLBAR) .withAboutIconShown(true).withAboutVersionShown(true) .withAboutAppName(getString(R.string.app_name)) .withActivityTitle(getString(R.string.action_about)) .withAboutDescription(getString(R.string.about_license)).start(MainActivity.this); break; } return false; } }); actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.app_name, R.string.app_name) { @Override public void onDrawerClosed(View drawerView) { super.onDrawerClosed(drawerView); } @Override public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); } }; //Setting the actionbarToggle to drawer layout drawerLayout.setDrawerListener(actionBarDrawerToggle); //calling sync state is necessay or else your hamburger icon wont show up actionBarDrawerToggle.syncState(); } }