web-dev-qa-db-ja.com

すべてのアクティビティでツールバーを使用する(Android)

ActionBarを置き換えるためにツールバーを使用しています。すべてが1つの問題でうまくいっています。

ツールバーは、メインアクティビティにのみ表示されます。

メインアクティビティで行ったのと同じ方法でアクティビティのツールバーを呼び出そうとすると、そのアクティビティを呼び出すとアプリがクラッシュします。

CreateOptionsMenuのツールバーを膨張させようとすると、呼び出すとそのアクティビティがクラッシュします。

メインアクティビティだけでなく、すべてのアクティビティで同じツールバーを呼び出す/使用する方法を教えてください。

コードの一部を次に示します。

public Android.support.v7.widget.Toolbar toolbar;

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_about);
    toolbar = (Android.support.v7.widget.Toolbar) findViewById(R.id.app_bar_id);
    setSupportActionBar(toolbar);
}

上記のコードはツールバーを正常に呼び出すように機能しますが、メインアクティビティで使用した場合にのみ機能します。ツールバーに上記と同じメソッドを呼び出した場合、残りのアクティビティはクラッシュします。

助けてください

ありがとうございました。

編集済み:

リクエストに応じて、さらに多くのコードフラグメントがあります。

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:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@color/actionbarbgcolor"
app:popupTheme="@style/popUpTheme">

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

themes.xml(styles.xmlの置換):

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.Android.com/tools">

<style name="DefaultActionBarTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowActionBar">false</item>
    <item name="Android:textColorPrimary">@color/windowbackgroundcolor</item>
    <item name="Android:windowBackground">@color/windowbackgroundcolor</item>
</style>

<style name="popUpTheme">
    <item name="Android:textColor">@color/actionbarbgcolor</item>
</style>
</resources>
30
Yousef Imran

解決策を見つけたので、残りのアクティビティレイアウトファイルにツールバーを含めるのを忘れました。そのため、そのアクティビティのレイアウトに存在しないツールバーを呼び出していました。

私はそれをメインのアクティビティにしか含めなかったので、そこで動作し、残りの部分でクラッシュしました。

初心者の場合、これは、ツールバーを使用するすべてのレイアウトxmlファイルに次のコードが存在する必要があることを意味します。

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

「app_bar」はツールバーに名前を付けただけであり、別の名前にすることもできます。

がんばろう。

42
Yousef Imran

ツールバーを含むフォローコードでレイアウトを作成できます

<?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="wrap_content"
    Android:fitsSystemWindows="true"
    tools:context="com.tejariapp.myapplicationtester1.MainActivity">


    <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>

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

設定しない場合、高さの値に注意してくださいwrap_content value次に、ツールバーを配置する各レイアウトで、単にこれを書くことができます

<include layout="@layout/toolabar" />
2
Marjan Dn