2015-12-20 7 views
-1

В настоящее время я изучаю, как создавать ToolBar в android. Я написал код, который не дает мне ошибок при построении, но подавляет во время выполнения. Поскольку ошибка появляется в строке setContentView(R.layout.activity_main), я предполагаю, что ошибка находится где-то в XML. Не могли бы вы сказать мне, что я сделал не так?Как создать панель инструментов приложения?

MainActivity.java

public class MainActivity extends AppCompatActivity { 

private Toolbar toolbar; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    toolbar = (Toolbar) findViewById(R.id.app_bar); 
    setSupportActionBar(toolbar); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    if(id == R.id.navigate){ 
     //startActivity(new Intent(this, SubActivity.class)); 
    } 

    return super.onOptionsItemSelected(item); 
} 

}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainMenu"> 

<include 
    android:id="@+id/app_bar" 
    layout="@layout/app_bar"/> 

<TextView 
    android:text="Hello World!" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

app_bar.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:iosched="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="@color/colorPrimary" 

iosched:theme="@style/ThemeOverlay.AppCompat.Light" 
iosched:popupTheme="@style/ThemeOverlay.AppCompat.Dark" 

> 
</android.support.v7.widget.Toolbar> 

styles.xml

<resources> 

<style name="AppTheme." parent="AppTheme.Base"> 
</style> 

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

EDIT StackTrace:

 12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime: FATAL EXCEPTION: main 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.joanna.fragmentn/com.example.joanna.fragmentn.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2081) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2106) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.app.ActivityThread.access$700(ActivityThread.java:134) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1217) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:99) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:137) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:4856) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at java.lang.reflect.Method.invokeNative(Native Method) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:511) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at dalvik.system.NativeStart.main(Native Method) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:310) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:279) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:253) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at com.example.joanna.fragmentn.MainActivity.onCreate(MainActivity.java:19) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.app.Activity.performCreate(Activity.java:5047) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2045) 
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2106)  
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.app.ActivityThread.access$700(ActivityThread.java:134)  
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1217)  
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:99)  
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:137)  
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:4856)  
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at java.lang.reflect.Method.invokeNative(Native Method)  
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:511)  
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)  
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)  
     12-20 16:00:50.238 14666-14666/com.example.joanna.fragmentn E/AndroidRuntime:  at dalvik.system.NativeStart.main(Native Method)  
+0

Пожалуйста, посту всех трассировкам стеки. – CommonsWare

+0

Stack trace добавлен :) –

+4

** Причиняется: java.lang.IllegalStateException: вам необходимо использовать тему Theme.AppCompat (или потомок) с этим действием. **. Определите тему для своей деятельности, которая вытекает из 'Theme.AppCompact' – Raghunandan

ответ

0

Попытка удалить эти строки:

iosched:theme="@style/ThemeOverlay.AppCompat.Light" 
iosched:popupTheme="@style/ThemeOverlay.AppCompat.Dark" 

Если он не будет работать изменение

xmlns:iosched="http://schemas.android.com/apk/res-auto" 

в

xmlns:app="http://schemas.android.com/apk/res-auto" 

Надеется, что это поможет