web-dev-qa-db-ja.com

Android:ActionBarをActionBarCompat(ツールバー)に変更する方法/チュートリアル?

私はこれにこだわっています、公式ガイダンスなどを確認しました。チュートリアル/ ActionBarからActionBarCompatに変更するための手順は何ですか(ツールバーと古いバージョンのサポートのためですか?appcompat-v7:21.0。+をインポートしました、試しました

getSupportActionBar();および

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);

setSupportActionBar(toolbar);

スタイルでテーマをappcompatテーマに変更しました...よくあるエラーやアイデアはありますか?

この種のエラーが発生し続ける:

Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.battery.plusfree/com.battery.plusfree.MainCollectionActivity}: Java.lang.NullPointerException
        at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2212)
        at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2271)
        at Android.app.ActivityThread.access$800(ActivityThread.Java:144)
        at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1205)
        at Android.os.Handler.dispatchMessage(Handler.Java:102)
        at Android.os.Looper.loop(Looper.Java:136)
        at Android.app.ActivityThread.main(ActivityThread.Java:5146)
        at Java.lang.reflect.Method.invokeNative(Native Method)
        at Java.lang.reflect.Method.invoke(Method.Java:515)
        at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:732)
        at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:566)
        at de.robv.Android.xposed.XposedBridge.main(XposedBridge.Java:132)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: Java.lang.NullPointerException
        at com.battery.plusfree.MainCollectionActivity.onCreate(MainCollectionActivity.Java:133)
        at Android.app.Activity.performCreate(Activity.Java:5231)
        at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1087)
        at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2169)
            at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2271)
            at Android.app.ActivityThread.access$800(ActivityThread.Java:144)
            at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1205)
            at Android.os.Handler.dispatchMessage(Handler.Java:102)
            at Android.os.Looper.loop(Looper.Java:136)
            at Android.app.ActivityThread.main(ActivityThread.Java:5146)
            at Java.lang.reflect.Method.invokeNative(Native Method)
            at Java.lang.reflect.Method.invoke(Method.Java:515)
            at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:732)
            at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:566)
            at de.robv.Android.xposed.XposedBridge.main(XposedBridge.Java:132)
            at dalvik.system.NativeStart.main(Native Method)
11
LemonGentry

私のアプリケーションで学んだことは、ツールバーとアクションバーを同時に使用できないことです。そのため、問題が発生する可能性がありますが、コードを投稿しなかったのでわかりませんが、styles.xmlファイルを使用して、次のいずれかを指定する必要があります。

<style name="AppTheme.Base" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/mycolorprimary</item>
    <item name="colorPrimaryDark">@color/mycolorprimarydark</item>
    <item name="Android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

Activity.xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" xmlns:custom="http://schemas.Android.com/apk/res-auto"
    Android:orientation="vertical" Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <!-- dont use this if you only want to use the actionbar instead -->

    <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_height="wrap_content"
        Android:layout_width="match_parent"
        Android:elevation="5dp"
        Android:minHeight="?attr/actionBarSize"
        Android:background="?attr/colorPrimary" />

</LinearLayout>

Activity.Java:

    public class MyActivity extends ActionBarActivity {

       Toolbar mToolbar;

       public void onCreate(Bundle savedInstanceState) {

          // configure toolbar stuff
          setSupportActionBar(mToolbar);

          // or if you don't want to use the toolbar
          // then change the style values accordingly
          // and then you can run getSupportActionBar() instead

       }

    }

参考: ここ ..これが役に立てば幸い!

13
Andrew Butler

@アンドリューバトラー:良い答えですが、アクションバーを使用しない標準的な方法があります。

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here.>
</style>

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here.>
</style>
4
AG1

テーマの親をアクションバーのない親に設定します。例えば

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/mycolorprimary</item>
    <item name="colorPrimaryDark">@color/mycolorprimarydark</item>
    <item name="Android:windowNoTitle">true</item>
</style>

WindowActionBarをfalseに設定する必要はもうありません。

1
JD2015