私は答えを探していて、多くの可能な解決策を試しましたが、何もうまくいかないようです。
このチュートリアル に従って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)に適用できません
どうすれば修正できますか?
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 !!!!
ツールバーを使用する場合、AppCompatActivityを拡張し、
import Android.support.v7.widget.Toolbar
マテリアルデザインをサポートするツールバーを追加するには、おそらく 公式ドキュメントの指示 が最適です。
アクティビティをAppCompatActivity
に拡張します。
public class MyActivity extends AppCompatActivity {
// ...
}
マニフェストでNoActionBar
を宣言します。
<application
Android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
アクティビティのxmlレイアウトにツールバーを追加します。
<Android.support.v7.widget.Toolbar
Android:id="@+id/my_toolbar"
Android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
...
/>
アクティビティのsetSupportActionBar
でonCreate
を呼び出します。
@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;
以上のAndroidバージョンの場合
import androidx.appcompat.widget.Toolbar;
未満のAndroidバージョンの場合
import Android.widget.Toolbar;
マニフェスト宣言に次のようなAndroid:theme = "@ style/AppTheme.NoActionBar"タグが含まれていることを確認します。
<activity
Android:name=".PointsScreen"
Android:theme="@style/AppTheme.NoActionBar">
</activity>
Studio 3.0+にandroidxが追加されたことで、ツールバーの互換性が新しいライブラリになりました。
import androidx.appcompat.widget.Toolbar
ただ変える
import Android.widget.Toolbar;
に
import Android.support.v7.widget.Toolbar;
認識できないsetSuppertActionBarの問題を解決するには、クラスをAppCompatActivityの拡張にする必要があります
インポートリストにインポート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
以前にこのコードを使用していました:
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
appCompatActivityも拡張しましたが、同じエラーが発生していました。 Toolbarクラスを使用する代わりに、以下のクラスをインポートしました。
Android.support.v7.widget.Toolbar
ツールバーの名前は簡単に変更できます
Android:label="My Activity"
マニフェストファイル内。マニフェストを通過して見つけた
Android:label
特定のアクティビティに応じて変更するのに役立ちます。試してみてください