Skip to content

Instantly share code, notes, and snippets.

@iamnotacoder-djs
Created June 14, 2017 19:24
Show Gist options
  • Save iamnotacoder-djs/e117792926fa2d35d4f91871ca485aae to your computer and use it in GitHub Desktop.
Save iamnotacoder-djs/e117792926fa2d35d4f91871ca485aae to your computer and use it in GitHub Desktop.
Base Navigation Drawer Activity
package ru.idaspin.risensapp.activities.base;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import butterknife.BindView;
import butterknife.ButterKnife;
import ru.arturvasilov.rxloader.LifecycleHandler;
import ru.arturvasilov.rxloader.LoaderLifecycleHandler;
import ru.idaspin.risensapp.R;
/**
* Created by idaspin on 6/14/2017.
*/
public class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, BaseView {
@BindView(R.id.drawer_layout) DrawerLayout mDrawerLayout;
@BindView(R.id.nav_view) NavigationView mNavigationView;
@BindView(R.id.toolbar) Toolbar mToolbar;
public ActionBarDrawerToggle mToggle;
private BasePresenter mPresenter;
protected void onCreateDrawer() {
setContentView(R.layout.activity_base);
ButterKnife.bind(this);
setSupportActionBar(mToolbar);
mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, 0, 0) {
public void onDrawerClosed(View view) {
getSupportActionBar().setTitle(R.string.app_name);
}
public void onDrawerOpened(View drawerView) {
getSupportActionBar().setTitle(R.string.navigation_drawer_open);
}
};
mDrawerLayout.addDrawerListener(mToggle);
mToggle.syncState();
mNavigationView.setNavigationItemSelectedListener(this);
LifecycleHandler lifecycleHandler = LoaderLifecycleHandler.create(this, getSupportLoaderManager());
mPresenter = new BasePresenter(lifecycleHandler, this);
}
@Override
public void onBackPressed() {
mPresenter.onBackPressed(mDrawerLayout.isDrawerOpen(GravityCompat.START));
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
mPresenter.onNavigationItemSelected(item.getItemId());
return true;
}
@Override
public void hideDrawer() {
mDrawerLayout.closeDrawer(GravityCompat.START);
}
@Override
public void openActivity(Class<? extends AppCompatActivity> target, String title) {
Intent intent = new Intent(this, target);
intent.putExtra("Actionbarname", title);
startActivity(intent);
}
}
package ru.idaspin.risensapp.activities.base;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import ru.arturvasilov.rxloader.LifecycleHandler;
/**
* Created by idaspin on 6/14/2017.
*/
class BasePresenter {
private BaseView mBaseView;
BasePresenter(@NonNull LifecycleHandler lifecycleHandler,
@NonNull BaseView mainView) {
mBaseView = mainView;
}
void onNavigationItemSelected(int id) {
switch (id) {
default:
mBaseView.openActivity(AppCompatActivity.class, "Ошибка");
break;
}
mBaseView.hideDrawer();
}
void onBackPressed(boolean isDrawerOpen) {
if (isDrawerOpen) {
mBaseView.hideDrawer();
}
}
}
package ru.idaspin.risensapp.activities.base;
import android.support.v7.app.AppCompatActivity;
/**
* Created by idaspin on 6/14/2017.
*/
interface BaseView {
void hideDrawer();
void openActivity(Class<? extends AppCompatActivity> appCompatActivityClass, String title);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment