2017-05-05 26 views
0

我是新材料設計人員,我正在嘗試一些操作。 對於我的應用程序最小sdk是21.但我的應用程序崩潰與下面的代碼。工具欄帶有工具欄崩潰的應用程序

代碼

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
android:orientation="vertical"> 

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:background="@color/colorPrimary" 
    android:elevation="5dp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    > 
</android.support.v7.widget.Toolbar> 



</LinearLayout> 

主要活動的代碼

<?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="com.example.sagar.moviesuccesspredictor.MainActivity"> 
<include 
    android:id="@+id/tool_bar" 
    android:layout="@layout/tool_bar" 
    tools:layout_editor_absoluteY="45dp" 
    tools:layout_editor_absoluteX="0dp" /> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Hello World!" 
     android:layout_below="@+id/tool_bar" 
     android:layout_marginTop="10dp"/> 

</RelativeLayout> 

和我的Java代碼

public class MainActivity extends AppCompatActivity { 
Toolbar toolbar; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     toolbar=(android.support.v7.widget.Toolbar) findViewById(R.id.tool_bar); 
     setSupportActionBar(toolbar); 
    } 
} 

我不需要任何向後兼容性預棒棒糖。 如果沒有後援,我也找不到任何教程。 任何幫助對我來說都很棒。

logcat的是

了java.lang.RuntimeException:無法啓動活動ComponentInfo {com.example.sagar.movi​​esuccesspredictor/com.example.sagar.movi​​esuccesspredictor.MainActivity}:android.view.InflateException:二進制XML文件第9行:您必須在android中的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3416) 上的include標記中指定佈局: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3320) 。 app.ActivityThread.access $ 1100(ActivityThread.java:230) at android.app.ActivityThread $ H.handleMe ssage(ActivityThread.java:1822) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main( ActivityThread.java:7409) 在java.lang.reflect.Method.invoke(本機方法) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1230) 在com.android.internal .os.ZygoteInit.main(ZygoteInit.java:1120) 引起:android.view.InflateException:二進制XML文件行#9:您必須在include標籤中指定一個佈局: at android.view.LayoutInflater.inflate( LayoutInflater.jav a:551) at android.view.LayoutInflater.inflate(LayoutInflater.java:429) at android.view.LayoutInflater.inflate(LayoutInflater.java:380) at android.support.v7.app.AppCompatDelegateImplV9.setContentView( AppCompatDelegateImplV9.java:292) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at com.example.sagar.movi​​esuccesspredictor.MainActivity.onCreate(MainActivity.java:16) at android。 app.Activity.performCreate(Activity.java:6904) 在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136) 在android.app。在android.app.ActivityThread.access上使用ActivityThread.performLaunchActivity(ActivityThread.java:3267) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3416) at android.app.ActivityThread.access $ 1100(ActivityThread.java:230) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1822) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(活套。java:148) at android.app.ActivityThread.main(ActivityThread.java:7409) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 引起:android.view.InflateException:您必須在include標籤中指定佈局: at android .view.LayoutInflater.parseInclude(LayoutInflater.java:923) at android.view.LayoutInflater.rInflate(LayoutInflater.java:843) at android.view.LayoutInflater.rInflateChildren(LayoutInfla ter.java:810) 在android.view.LayoutInflater.inflate(LayoutInflater.java:527) 在android.view.LayoutInflater.inflate(LayoutInflater.java:429) 在android.view.LayoutInflater.inflate(LayoutInflater。 java:380) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at com.example。 sagar.movi​​esuccesspredictor.MainActivity.onCreate(MainActivity.java:16) at android.app.Activity.performCreate(Activity.java:6904) at android。 (android.app.ActivityThread.java:3416) at android.app。在android.os.Handler.dispatchMessage(Handler.java:102) at android.os上使用ActivityThread.access $ 1100(ActivityThread.java:230) $ android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1822) .Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:7409) at java.lang.reflect.M ethod.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

+0

顯示錯誤日誌。 –

+0

你的堆棧跟蹤在哪裏? –

+0

它不顯示任何錯誤 –

回答

0

工具欄的ID是toolbartool_bar。可以使用類似

public class MainActivity extends AppCompatActivity { 
Toolbar toolbar; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    toolbar=(Toolbar) findViewById(R.id.toolbar); 

    } 
} 

編輯1:示例使用工具欄

工具欄。XML

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

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="@string/app_name" 
    android:textColor="#fff" 
    android:gravity="center" 
    android:textStyle="bold" 
    android:textSize="18dp"/> 

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

main_activity.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:ads="http://schemas.android.com/apk/res-auto" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

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

<TextView 
    android:id="@+id/toolbar_title" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/this_toolbar" 
    android:text="TextView"/> 

</RelativeLayout> 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

TextView m_toolbar_title; 

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    m_toolbar_title = (TextView)findViewById(R.id.toolbar_title); 
    m_toolbar_title.setText("Activity Title"); 

    } 

} 

layout="@layout/toolbar"activity_main.xml中toolbar應該由具有<Toolbar>

看一看FILE_NAME。這可能會幫助你。

+0

感謝注意到,。 。但我的應用程序仍然在修復後崩潰 –

+0

嘗試我編輯的答案。根據我的知識'setSupportActionBar'在此階段不需要 –

+0

仍然沒有運氣與此 –

0

試試這個。

您的toolbar.xml應該是這樣的。

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/tool_bar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    > 

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

仍然崩潰。 –

+0

仔細檢查id和主題也 –

0

試試這個代碼

<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" 
    app:popupTheme="@style/AppTheme.PopupOverlay" /> 

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

和style.xml添加這些行

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

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> 
+0

它不工作 –

+0

<樣式名稱= 「AppTheme.NoActionBar」> <項目名稱= 「windowActionBar」>假 <項目名稱= 「windowNoTitle」>真 添加此在風格和 –

+0

<活動 機器人:名字= 「MainActivity。」 機器人:標籤= 「@字符串/ APP_NAME」 機器人:主題= 「@風格/ AppTheme.NoActionBar」> <意圖過濾器> <行動機器人:名字=「android.intent.action。MAIN」 /> <類機器人:名字=‘android.intent.category.LAUNCHER’/> 應用這一主題,以你的活動這樣 –

0

您的主要活動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="com.example.sagar.moviesuccesspredictor.MainActivity"> 
<include 
    android:id="@+id/tool_bar" 
    layout="@layout/tool_bar" 
    tools:layout_editor_absoluteY="45dp" 
    tools:layout_editor_absoluteX="0dp" /> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Hello World!" 
     android:layout_below="@+id/tool_bar" 
     android:layout_marginTop="10dp"/> 

</RelativeLayout> 

問題是標籤,而不是機器人:佈局,你必須使用佈局:yourLayoutfile。並確保您在mainActivity中使用支持工具欄以及