Turned navigation drawer code into base activity to subclass
This commit is contained in:
146
src/net/i2p/android/router/activity/I2PActivityBase.java
Normal file
146
src/net/i2p/android/router/activity/I2PActivityBase.java
Normal file
@ -0,0 +1,146 @@
|
||||
package net.i2p.android.router.activity;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
import net.i2p.android.router.fragment.I2PFragmentBase;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.ActionBarDrawerToggle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
|
||||
public class I2PActivityBase extends ActionBarActivity {
|
||||
protected DrawerLayout mDrawerLayout;
|
||||
protected ListView mDrawerList;
|
||||
protected ActionBarDrawerToggle mDrawerToggle;
|
||||
|
||||
private CharSequence mDrawerTitle;
|
||||
private CharSequence mTitle;
|
||||
private String[] mFragments;
|
||||
private String[] mFragmentTitles;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
|
||||
mTitle = mDrawerTitle = getTitle();
|
||||
mFragments = getResources().getStringArray(R.array.main_fragments);
|
||||
mFragmentTitles = getResources().getStringArray(R.array.main_fragment_titles);
|
||||
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
mDrawerList = (ListView) findViewById(R.id.drawer);
|
||||
|
||||
// Set a custom shadow that overlays the main content when the drawer opens
|
||||
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
|
||||
mDrawerList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
|
||||
// Set the adapter for the list view
|
||||
mDrawerList.setAdapter(new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_list_item_1, mFragmentTitles));
|
||||
// Set the list's click listener
|
||||
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
|
||||
|
||||
// Enable ActionBar app icon to behave as action to toggle nav drawer
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setHomeButtonEnabled(true);
|
||||
|
||||
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
|
||||
R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
|
||||
|
||||
/** Called when a drawer has settled in a completely closed state. */
|
||||
public void onDrawerClosed(View view) {
|
||||
getSupportActionBar().setTitle(mTitle);
|
||||
supportInvalidateOptionsMenu();
|
||||
}
|
||||
|
||||
/** Called when a drawer has settled in a completely open state. */
|
||||
public void onDrawerOpened(View view) {
|
||||
getSupportActionBar().setTitle(mDrawerTitle);
|
||||
supportInvalidateOptionsMenu();
|
||||
}
|
||||
};
|
||||
|
||||
// Set the drawer toggle as the DrawerListener
|
||||
mDrawerLayout.setDrawerListener(mDrawerToggle);
|
||||
}
|
||||
|
||||
/* Called whenever we call invalidateOptionsMenu() */
|
||||
@Override
|
||||
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||
// If the nav drawer is open, hide action items related to the content view
|
||||
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
|
||||
//menu.findItem(R.id.action_add_to_addressbook).setVisible(!drawerOpen);
|
||||
return super.onPrepareOptionsMenu(menu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
// The action bar home/up action should open or close the drawer.
|
||||
// ActionBarDrawerToggle will take care of this.
|
||||
if(mDrawerToggle.onOptionsItemSelected(item)) {
|
||||
return true;
|
||||
}
|
||||
// Handle action buttons
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private class DrawerItemClickListener implements ListView.OnItemClickListener {
|
||||
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
|
||||
selectItem(pos);
|
||||
}
|
||||
}
|
||||
|
||||
private void selectItem(int pos) {
|
||||
Fragment fragment = Fragment.instantiate(I2PActivityBase.this, mFragments[pos]);
|
||||
|
||||
// Insert the fragment by replacing any existing fragment
|
||||
FragmentManager fragmentManager = getSupportFragmentManager();
|
||||
fragmentManager.beginTransaction()
|
||||
.replace(R.id.main_content, fragment)
|
||||
.commit();
|
||||
|
||||
// Highlight the selected item, update the title, and close the drawer
|
||||
mDrawerList.setItemChecked(pos, true);
|
||||
setTitle(mFragmentTitles[pos]);
|
||||
mDrawerLayout.closeDrawer(mDrawerList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTitle(CharSequence title) {
|
||||
mTitle = title;
|
||||
getSupportActionBar().setTitle(mTitle);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostCreate(Bundle savedInstanceState) {
|
||||
super.onPostCreate(savedInstanceState);
|
||||
// Sync the toggle state after onRestoreInstanceState has occurred.
|
||||
mDrawerToggle.syncState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfigurationChanged(Configuration newConfig) {
|
||||
super.onConfigurationChanged(newConfig);
|
||||
// Pass any configuration change to the drawer toggle
|
||||
mDrawerToggle.onConfigurationChanged(newConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.main_content);
|
||||
if (fragment instanceof I2PFragmentBase) {
|
||||
I2PFragmentBase ifb = (I2PFragmentBase) fragment;
|
||||
// If we shouldn't stay on this fragment, go back.
|
||||
if (ifb.onBackPressed())
|
||||
return;
|
||||
}
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
@ -1,78 +1,16 @@
|
||||
package net.i2p.android.router.activity;
|
||||
|
||||
import android.os.Bundle;
|
||||
import net.i2p.android.router.R;
|
||||
import net.i2p.android.router.fragment.I2PFragmentBase;
|
||||
import net.i2p.android.router.fragment.MainFragment;
|
||||
import net.i2p.android.router.fragment.VersionDialog.VersionDialogListener;
|
||||
import net.i2p.android.router.util.Util;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.ActionBarDrawerToggle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
|
||||
public class MainActivity extends ActionBarActivity
|
||||
public class MainActivity extends I2PActivityBase
|
||||
implements VersionDialogListener {
|
||||
private DrawerLayout mDrawerLayout;
|
||||
private ListView mDrawerList;
|
||||
private ActionBarDrawerToggle mDrawerToggle;
|
||||
|
||||
private CharSequence mDrawerTitle;
|
||||
private CharSequence mTitle;
|
||||
private String[] mFragments;
|
||||
private String[] mFragmentTitles;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
|
||||
mTitle = mDrawerTitle = getTitle();
|
||||
mFragments = getResources().getStringArray(R.array.main_fragments);
|
||||
mFragmentTitles = getResources().getStringArray(R.array.main_fragment_titles);
|
||||
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
mDrawerList = (ListView) findViewById(R.id.drawer);
|
||||
|
||||
// Set a custom shadow that overlays the main content when the drawer opens
|
||||
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
|
||||
mDrawerList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
|
||||
// Set the adapter for the list view
|
||||
mDrawerList.setAdapter(new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_list_item_1, mFragmentTitles));
|
||||
// Set the list's click listener
|
||||
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
|
||||
|
||||
// Enable ActionBar app icon to behave as action to toggle nav drawer
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setHomeButtonEnabled(true);
|
||||
|
||||
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
|
||||
R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
|
||||
|
||||
/** Called when a drawer has settled in a completely closed state. */
|
||||
public void onDrawerClosed(View view) {
|
||||
getSupportActionBar().setTitle(mTitle);
|
||||
supportInvalidateOptionsMenu();
|
||||
}
|
||||
|
||||
/** Called when a drawer has settled in a completely open state. */
|
||||
public void onDrawerOpened(View view) {
|
||||
getSupportActionBar().setTitle(mDrawerTitle);
|
||||
supportInvalidateOptionsMenu();
|
||||
}
|
||||
};
|
||||
|
||||
// Set the drawer toggle as the DrawerListener
|
||||
mDrawerLayout.setDrawerListener(mDrawerToggle);
|
||||
|
||||
// Start with the home view
|
||||
if (savedInstanceState == null) {
|
||||
@ -83,53 +21,6 @@ public class MainActivity extends ActionBarActivity
|
||||
}
|
||||
}
|
||||
|
||||
/* Called whenever we call invalidateOptionsMenu() */
|
||||
@Override
|
||||
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||
// If the nav drawer is open, hide action items related to the content view
|
||||
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
|
||||
//menu.findItem(R.id.action_add_to_addressbook).setVisible(!drawerOpen);
|
||||
return super.onPrepareOptionsMenu(menu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
// The action bar home/up action should open or close the drawer.
|
||||
// ActionBarDrawerToggle will take care of this.
|
||||
if(mDrawerToggle.onOptionsItemSelected(item)) {
|
||||
return true;
|
||||
}
|
||||
// Handle action buttons
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private class DrawerItemClickListener implements ListView.OnItemClickListener {
|
||||
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
|
||||
selectItem(pos);
|
||||
}
|
||||
}
|
||||
|
||||
private void selectItem(int pos) {
|
||||
Fragment fragment = Fragment.instantiate(MainActivity.this, mFragments[pos]);
|
||||
|
||||
// Insert the fragment by replacing any existing fragment
|
||||
FragmentManager fragmentManager = getSupportFragmentManager();
|
||||
fragmentManager.beginTransaction()
|
||||
.replace(R.id.main_content, fragment)
|
||||
.commit();
|
||||
|
||||
// Highlight the selected item, update the title, and close the drawer
|
||||
mDrawerList.setItemChecked(pos, true);
|
||||
setTitle(mFragmentTitles[pos]);
|
||||
mDrawerLayout.closeDrawer(mDrawerList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTitle(CharSequence title) {
|
||||
mTitle = title;
|
||||
getSupportActionBar().setTitle(mTitle);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostCreate(Bundle savedInstanceState) {
|
||||
Util.i("Initializing...");
|
||||
@ -137,27 +28,6 @@ public class MainActivity extends ActionBarActivity
|
||||
init.debugStuff();
|
||||
init.initialize();
|
||||
super.onPostCreate(savedInstanceState);
|
||||
// Sync the toggle state after onRestoreInstanceState has occurred.
|
||||
mDrawerToggle.syncState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfigurationChanged(Configuration newConfig) {
|
||||
super.onConfigurationChanged(newConfig);
|
||||
// Pass any configuration change to the drawer toggle
|
||||
mDrawerToggle.onConfigurationChanged(newConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.main_content);
|
||||
if (fragment instanceof I2PFragmentBase) {
|
||||
I2PFragmentBase ifb = (I2PFragmentBase) fragment;
|
||||
// If we shouldn't stay on this fragment, go back.
|
||||
if (ifb.onBackPressed())
|
||||
return;
|
||||
}
|
||||
super.onBackPressed();
|
||||
}
|
||||
|
||||
public void onFirstRun() {
|
||||
|
Reference in New Issue
Block a user