Wie zeigt man die Navigationsleiste in allen Aktivitäten an?
Ich habe eine Navigation Drawer
angezeigt werden soll in alle meine Aktivitäten.
Sah ich viele Fragen ähnlich wie diese & eine Lösung gefunden, wie die Erweiterung der MainActivity mit den Anderen Aktivitäten .
Also erweiterte ich Meine Haupttätigkeit auf meine Zweite Tätigkeit.Aber die Schublade ist nicht zeigte sich in der Zweiten Aktivität
MainActivity
public class MainActivity extends ActionBarActivity
{
private ListView mDrawerList;
private DrawerLayout mDrawer;
private CustomActionBarDrawerToggle mDrawerToggle;
private String[] menuItems;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
supportRequestWindowFeature(WindowCompat.FEATURE_ACTION_BAR);
//getSupportActionBar().hide();
setContentView(R.layout.activity_main_drawer);
//enable ActionBar app icon to behave as action to toggle nav drawer
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
//set a custom shadow that overlays the main content when the drawer
//opens
mDrawer.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
_initMenu();
mDrawerToggle = new CustomActionBarDrawerToggle(this, mDrawer);
mDrawer.setDrawerListener(mDrawerToggle);
}
private void _initMenu()
{
NsMenuAdapter mAdapter = new NsMenuAdapter(this);
//Add Header
mAdapter.addHeader(R.string.ns_menu_main_header);
//Add first block
menuItems = getResources().getStringArray(R.array.ns_menu_items);
String[] menuItemsIcon = getResources().getStringArray(R.array.ns_menu_items_icon);
int res = 0;
for (String item : menuItems)
{
int id_title = getResources().getIdentifier(item, "string", this.getPackageName());
int id_icon = getResources().getIdentifier(menuItemsIcon[res], "drawable", this.getPackageName());
NsMenuItemModel mItem = new NsMenuItemModel(id_title, id_icon);
//if (res==1) mItem.counter=12; //it is just an example...
//if (res==3) mItem.counter=3; //it is just an example...
mAdapter.addItem(mItem);
res++;
}
mAdapter.addHeader(R.string.ns_menu_main_header2);
mDrawerList = (ListView) findViewById(R.id.drawer);
if (mDrawerList != null)
mDrawerList.setAdapter(mAdapter);
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
}
@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);
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.control_menu, menu);
return super.onCreateOptionsMenu(menu);
}
/* 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 = mDrawer.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action_keyboard).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
/*
* The action bar home/up should open or close the drawer.
* ActionBarDrawerToggle will take care of this.
*/
if (mDrawerToggle.onOptionsItemSelected(item))
{
return true;
}
//Handle your other action bar items...
return super.onOptionsItemSelected(item);
}
private class CustomActionBarDrawerToggle extends ActionBarDrawerToggle
{
public CustomActionBarDrawerToggle(Activity mActivity, DrawerLayout mDrawerLayout)
{
super(mActivity, mDrawerLayout, R.drawable.ic_drawer, R.string.ns_menu_open, R.string.ns_menu_close);
}
@Override
public void onDrawerClosed(View view)
{
getSupportActionBar().setTitle(getString(R.string.ns_menu_close));
supportInvalidateOptionsMenu(); //creates call to
//onPrepareOptionsMenu()
}
@Override
public void onDrawerOpened(View drawerView)
{
getSupportActionBar().setTitle(getString(R.string.ns_menu_open));
supportInvalidateOptionsMenu(); //creates call to
//onPrepareOptionsMenu()
}
}
private class DrawerItemClickListener implements ListView.OnItemClickListener
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Intent intent = new Intent(MainActivity.this, Tutorial.class);
startActivity(intent);
}
}
}
SecondActivity
public class Tutorial extends MainActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
//TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.help);
}
}
InformationsquelleAutor der Frage AruLNadhaN | 2014-01-28
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
in
onCreate
vonTutorialActivity
nicht nennensetContentView
statt dies zu tun:machen
mDrawer
imMainActivity
geschützt. und inR.layout.activity_main_drawer
nur halten Schublade-tag und das element mit der Schwerkraft nach Links(oder rechts).InformationsquelleAutor der Antwort vipul mittal
Hier ist meine Umsetzung.. hoffe es hilft
ERSTENdiese POST ist Konzept.
ZWEITENdies ist auch der SCHLÜSSEL.
SCHLIEßLICHHier ist die Kombination aller Antwort in einem Ort
BASE ACTIVITY
Dies ist eine Basis-Aktivität für alle anderen Aktivitäten
Können Sie erweitert die Aktivität oder FragmentActivity oder etc. Basis auf Ihren Anforderungen.
Navigation Drawer
setup hier für eine Zeit.BASE ACTIVITY XML
Diese xml-layout ist für
Navigation Drawer
ALLE ANDEREN AKTIVITÄTEN
Anderen
Activity
nur erweitertBaseActivity
und definieren Sie code wie unten.Den
Navigation Drawer
erscheint, die für eine Besondere Aktivität.mDrawer
ist formBaseActivity
. es ist einprotected
variable.BILDSCHIRM 1 XML-BEISPIEL
Design, wie Sie es wünschen zu jeder Aktivität. nicht mehr
Navigation Drawer
Layout !HINWEIS
In dieser Implementierung, Die
Navigation Drawer
nicht binden mit der Aktion Bar. Wenn Sie dies tun möchten, tun Sie es inBaseActivity
.Auch Dieser guide ist nicht für alle Voraussetzung. Es ist nur ein Beispiel.InformationsquelleAutor der Antwort Jongz Puangput
Machte ich einen BaseActivity Tätigkeit erstreckt SherlockActivity (oder ActionBarActivity wenn Ihr Fall ist)
Dann machen alle Ihre Aktivitäten erweitert BaseActivity, wie:
Später, müssen Sie ersetzen die Aktivität layout mit der, entsprechend Ihrer Tätigkeit, habe ich eine Methode in BaseActivity so:
Ich nannte diese Methode auf die onCreate-Methode in jeder Tätigkeit:
super.CONTENT_LAYOUT_ID
ist das FrameLayout der BaseActivity und andere param ist das layout, das Sie möchten, ersetzen Sie mitInformationsquelleAutor der Antwort Daniel Siguero
Vergessen die
@Override
aus Ihr abgeleitete KlasseonCreate
.UPDATE: ich bin mir nicht sicher, was die Auswirkungen von aufrufen
setContentView
zweimal, aber das könnte das problem sein. Trennen Sie den code, der festlegt, bis sich die Schublade, und rufen, dass aus den beidenonCreate
Methoden.InformationsquelleAutor der Antwort Greg Ennis
Ich hatte dieses problem auch. Dies ist meine Umsetzung:
activity_main.xml - das Kind an index 1 in der CoordinatorLayout wird die content_main.xmldas kann ich ändern im code.
Habe ich eine Klasse angelegt, die verwendet bläst den anderen Aktivitäten UI:
Nun auf die weiteren Aktivitäten alles, was Sie tun müssen ist, erstrecken sich die MainActivity und rufen Sie diese Methode auf und geben Sie die erforderlichen Parameter:
InformationsquelleAutor der Antwort Razvan Cristian Lung
Ok, hier ist hacky Weg, dies zu tun, ich benutze es nur für Besondere Art von debug-build, um Eigenschaften von Ansichten in Echtzeit (design-tool).
Es hat den Vorteil, dass können Sie mit Ihrem Kind Aktivitäten wie gewohnt ohne Besondere Verhalten, das erforderlich ist, unterschiedliche Antworten.
so, in BaseActvity die Sie hinzufügen können:
- und xml-für die Schublade ist einfach:
InformationsquelleAutor der Antwort Wiktor Wardzichowski