2016-11-29 127 views
0

我創建了NavigationDrawer類,現在我正在創建新的活動,它擴展了Navigation Drawer類。不幸的是,我經常收到這樣的錯誤:延伸NavigationDrawer活動

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 

     java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead. 

下面是NavigationDrawer類代碼:

public class Requests extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 
    public DrawerLayout drawer; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.requests); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 


     drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
    } 

    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 



    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     Intent in = getIntent(); 
     if (in.hasExtra("warehouse")) 
     { 
      id = R.id.nav_warehouse; 
      } 
     else if (in.hasExtra("cash")) 
     { 
      id = R.id.nav_cash; 
     } 
     if (id == R.id.nav_warehouse) { 
      Intent i = new Intent(getApplicationContext(), WarehouseRequests.class); 
      startActivity(i); 
     } else if (id == R.id.nav_cash) { 
      Intent i = new Intent(getApplicationContext(), CashRequests.class); 
      startActivity(i); 
     } else if (id == R.id.nav_log_out) { 
      Intent i = new Intent(getApplicationContext(), LoginActivity.class); 
      i.putExtra("logout", 1); 
      startActivity(i); 
     } 


    return true; 
    } 

} 

這裏是XML文件NavigationDrawer:

requests.xml:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start" 
    android:background="#dff3f7" 
    > 

    <include 
     layout="@layout/app_bar_requests" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 
     app:headerLayout="@layout/nav_header_requests" 
     app:menu="@menu/warehouse_requests_drawer" /> 

</android.support.v4.widget.DrawerLayout> 

app_bar_request.xml:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="com.example.sanzharaubakir.exgroup.Requests"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      android:theme="@style/AppTheme.PopupOverlay"/> 

    </android.support.design.widget.AppBarLayout> 

    <include layout="@layout/content_requests" /> 

</android.support.design.widget.CoordinatorLayout> 

和content_requests.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/container" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.example.sanzharaubakir.exgroup.Requests" 
    tools:showIn="@layout/app_bar_requests"> 

</RelativeLayout> 

這裏是我的活動代碼:

public class WarehouseRequests extends Requests { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     LayoutInflater inflater = (LayoutInflater) this 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View contentView = inflater.inflate(R.layout.warehouse, null, false); 
     drawer.addView(contentView, 0); 
    } 
} 

這裏是我的風格:

<resources> 

    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 

    </style> 


    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> 

    <style name="AppTheme.PopupOverlay" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
    </style> 

</resources> 
+0

您已回答您的問題: - 您需要使用Theme.AppCompat主題(或後代)進行此活動。 – Bhavnik

回答

1

添加到您的styles.xml文件

<style name="AppTheme.NoActionBar"> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
</style> 

,並在manifest.xml文件這種風格應用到您的Activity

android:theme="@style/AppTheme.NoActionBar" 
+0

感謝它的工作 – Sanzhar

+0

@Sanzhar gald知道這一點。 – Ironman

+0

我在這裏又遇到了一個問題,現在工具欄隱藏了一部分佈局,你知道爲什麼嗎? – Sanzhar

0
android:theme="@style/AppTheme.NoActionBar" 

add t他對你的warehouserequests活動清單文件