私は実装しようとしていました Android.support.v4.app.ActionBarDrawerToggle 私のアプリで;このクラスは非推奨であるため
このクラスは非推奨です。 support-v7-appcompatでActionBarDrawerToggleを使用してください。
Android.support.v7.app.ActionBarDrawerToggleに切り替えました。
この方法でコンストラクターを呼び出す前に:
mDrawerToggle = new ActionBarDrawerToggle(
this, /* Host Activity */
mDrawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description for accessibility */
R.string.drawer_close /* "close drawer" description for accessibility */
){
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
};
しかし、新しいv7サポートライブラリに切り替えた後、エラーが発生します
"ActionBarDrawerToggle() in ActionBarDrawerToggle cannot be applied to:
toolbar: Android.support.v7.widget.Toolbar
Actual arguments: R.drawable.ic_drawer (int)"
どうやら私はコンストラクターに適切なツールバーを導入していませんが、2つの矛盾する引数の違いを理解するのはよくわかりません。必要なツールバーを取得するにはどうすればよいですか?
この例に示すように、新しいAndroid.support.v7.app.ActionBarDrawerToggle
をインポートし、ListViewの代わりにRecyclerViewを使用することで、問題を解決しました。 ヘッダービューを使用してマテリアルデザインナビゲーションドロワーを作成する方法 :
private ActionBarDrawerToggle mDrawerToggle;
//... ...
mDrawerToggle = new ActionBarDrawerToggle(
this,
mDrawerLayout,
toolbar,
R.string.drawer_open, R.string.drawer_close){
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
// code here will execute once the drawer is opened
getSupportActionBar().setTitle(mTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
// Code here will execute once drawer is closed
getSupportActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu();
};
それでも問題が解決しない場合は、こちらを確認してください: 非推奨のAndroid.support.v4.app.ActionBarDrawerToggleを置き換える方法
gradleプロパティに移動し、これを追加します
Android.useAndroidX=true
Android.enableJetifier=true
その後、これをJavaファイルにインポートします
import androidx.appcompat.app.ActionBarDrawerToggle;