Android: Navigation Schublade auf mehrere Aktivitäten
Ich versuche zur Umsetzung einer navigation Schublade auf mehrere Aktivitäten durch die Schaffung einer DrawerActivity, dass alle meine anderen Aktivitäten Erben aus.
Benutzt habe ich die folgenden 2 links für mich, wo ich bin:
https://developer.android.com/training/implementing-navigation/nav-drawer.html
Schublade erscheinen in allen Aktivitäten
Kann ich den navigation drawer (Haltegriff), allerdings kann ich nicht öffnen, es aus der Klick auf den Titel in der action-bar, noch kann ich sehen, alle Einzelteile in der Schublade. Ich kann jedoch öffnen von Schiebetüren in.
DrawerActivity.java
public class DrawerActivity extends Activity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
private String[] navOptions = new String[] {"Collect Offers",
"Exclusive", "Glove Box", "Servicing", "Dealer", "Settings"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawer);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.nav_drawer);
mDrawerList.setAdapter(new ArrayAdapter<String>(
this, R.layout.drawer_list_item, navOptions));
mDrawerToggle = new ActionBarDrawerToggle(
this,
mDrawerLayout,
R.drawable.ic_drawer,
R.string.drawer_open,
R.string.drawer_close
) {
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
getActionBar().setTitle(R.string.app_name);
}
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActionBar().setTitle(R.string.app_name);
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void setContentView(final int layoutResID) {
DrawerLayout fullLayout = (DrawerLayout) getLayoutInflater()
.inflate(R.layout.activity_drawer, null);
LinearLayout actContent = (LinearLayout) fullLayout
.findViewById(R.id.content);
getLayoutInflater().inflate(layoutResID, actContent, true);
super.setContentView(fullLayout);
}
}
activity_drawer.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/infiniti_splash_2x">
</LinearLayout>
<ListView android:id="@+id/nav_drawer"
android:layout_width="@dimen/nav_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>
HomeActivity.java
public class HomeActivity extends DrawerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
}
activity_home.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
InformationsquelleAutor Jason King | 2014-07-02
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Herausgefunden mein Problem. Das problem war, dass durch das überschreiben setContentView es hieß ein zweites mal (von HomeActivity OnCreate ()), NACHDEM die ActionBarDrawerToggle hatte sich bereits gesetzt. Dies bedeutet, dass es mir im Grunde überschreiben alle die Arbeit, die in der DrawerActivity OnCreate().
Hier ist mein modifizierter code in den DrawerActivity