web-dev-qa-db-ja.com

setSupportActionBarツールバーを(Android.widget.Toolbar)エラーに適用できません

私は答えを探していて、多くの可能な解決策を試しましたが、何もうまくいかないようです。

このチュートリアル に従ってMaterial Action Barをセットアップしようとしています。

ここに私のコードがあります:

tool_bar.xml:

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

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

activity.xml:

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v4.widget.DrawerLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/drawer_layout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="#FFFFFF">
    <!-- The main content view -->
    <RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:orientation="vertical">

        <include
            Android:id="@+id/app_bar"
            layout="@layout/tool_bar" />
    </RelativeLayout>
    <!-- Navigation Drawer -->
    <ListView
        Android:id="@+id/left_drawer"
        Android:layout_width="220dp"
        Android:layout_height="match_parent"
        Android:layout_gravity="left"
        Android:background="#1C1C1C"
        Android:divider="@Android:color/darker_gray"
        Android:dividerHeight="1dp" />

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

そして最後に私のアクティビティ。Java:

import Android.app.ActionBar;
import Android.support.v7.app.ActionBarActivity;
import Android.os.Bundle;
import Android.view.Menu;
import Android.view.MenuItem;
import Android.widget.Toolbar;


public class rutaActivity extends ActionBarActivity {

private Toolbar toolbar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ruta);

        getSupportActionBar().hide();//Ocultar ActivityBar anterior

        toolbar = (Toolbar) findViewById(R.id.app_bar);
        setSupportActionBar(toolbar); //HERE'S THE PROBLEM !!!!

エラー:

actionBarActivityのsetSupporActionBar(Android.support.v7.widget.Toolbar)は(Android.widget.Toolbar)に適用できません

どうすれば修正できますか?

47
HGRC

Activity.JavaではなくAndroid.support.v7.widget.ToolbarインポートAndroid.widget.Toolbarで:

import Android.app.ActionBar;
import Android.support.v7.app.AppCompatActivity;
import Android.os.Bundle;
import Android.view.Menu;
import Android.view.MenuItem;
import Android.support.v7.widget.Toolbar;


public class rutaActivity extends AppCompactActivity {

private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ruta);

    getSupportActionBar().hide();//Ocultar ActivityBar anterior

    toolbar = (Toolbar) findViewById(R.id.app_bar);
    setSupportActionBar(toolbar); //NO PROBLEM !!!!
132
Mohit Singh

ツールバーを使用する場合、AppCompatActivityを拡張し、

import Android.support.v7.widget.Toolbar 
22

マテリアルデザインをサポートするツールバーを追加するには、おそらく 公式ドキュメントの指示 が最適です。

  1. v7 appcompatサポートライブラリ を追加します。
  2. アクティビティをAppCompatActivityに拡張します。

    public class MyActivity extends AppCompatActivity {
      // ...
    }
    
  3. マニフェストでNoActionBarを宣言します。

    <application
        Android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        />
    
  4. アクティビティのxmlレイアウトにツールバーを追加します。

    <Android.support.v7.widget.Toolbar
       Android:id="@+id/my_toolbar"
       Android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
       ...
       />
    
  5. アクティビティのsetSupportActionBaronCreateを呼び出します。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(myToolbar);
    }
    

注:アクティビティに以下をインポートする必要があります。

import Android.support.v7.app.AppCompatActivity;
import Android.support.v7.widget.Toolbar;
15
Suragch

以上のAndroidバージョンの場合

import androidx.appcompat.widget.Toolbar;

未満のAndroidバージョンの場合

import Android.widget.Toolbar;
3
Messou

マニフェスト宣言に次のようなAndroid:theme = "@ style/AppTheme.NoActionBar"タグが含まれていることを確認します。

<activity
    Android:name=".PointsScreen"
    Android:theme="@style/AppTheme.NoActionBar">
</activity>
2
mathias.horn

Studio 3.0+にandroidxが追加されたことで、ツールバーの互換性が新しいライブラリになりました。

import androidx.appcompat.widget.Toolbar
1
Fa-C-Shus

ただ変える

import Android.widget.Toolbar;

import Android.support.v7.widget.Toolbar;
1
Samer Kasseb

認識できないsetSuppertActionBarの問題を解決するには、クラスをAppCompatActivityの拡張にする必要があります

1
Mosayeb Masoumi

インポートリストにインポートAndroid.support.v7.widget.Toolbarを追加すると、この問題は解決します。

次に、ツールバーウィジェットレイアウトファイルを追加します。

<Android.support.v7.widget.Toolbar
    Android:id="@+id/list_toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="?attr/colorPrimary"
    Android:minHeight="?attr/actionBarSize"
    Android:theme="?attr/actionBarTheme"
    />

JavaコードのonCreateメソッドで

//call to

Tootbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar);

ソース: https://developer.Android.com/training/appbar/up-action

1
trustidkid

以前にこのコードを使用していました:

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

appCompatActivityも拡張しましたが、同じエラーが発生していました。 Toolbarクラスを使用する代わりに、以下のクラスをインポートしました。

Android.support.v7.widget.Toolbar
0
amit pandya

ツールバーの名前は簡単に変更できます

Android:label="My Activity"

マニフェストファイル内。マニフェストを通過して見つけた

Android:label 

特定のアクティビティに応じて変更するのに役立ちます。試してみてください

0
Rushabh Gedam