非推奨android.support.v4.app.ActionBarDrawerToggleを交換する方法

? AndreaF @ | Original: StackOverFlow

昨日(17-10-2014)私は今、私は非推奨の警告に「 ____ 」 、読書関連を取得し、「 ____ 」私のアプリの更新AndroidのSDKを持っているhttps://developer.android.com/reference/android/support/v4 /app/ActionBarDrawerToggle.htmlは、私が「 ____ 」 「 ____ 」で使用する必要があることと思われる。

relevants可能性が私の活動のここではいくつかの部品:

support-library-v4.jar

私はサポート·ライブラリ· V7をコピーして置き換えることを試みてきた

ActionBarDrawerToggle

with

ActionBarDrawerToggle

これはコンパイルの問題で発生しました

support-library-v7.appcompact.jar

だから私はとの「 ____ 」に置き換えることを試みた

import android.app.ActionBar;
import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;


public class MyActivity extends FragmentActivity {
    private ActionBar bar;
    private CustomActionBarDrawerToggle mDrawerToggle;
    private DrawerLayout mDrawer;
    private ListView mDrawerList;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_infoviewer);

        bar = this.getActionBar();

        bar.setDisplayHomeAsUpEnabled(true);

        bar.setHomeButtonEnabled(true);
        bar.setDisplayShowTitleEnabled(false);
        mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);

        mDrawer.setBackgroundColor(getResources().getColor(R.color.White));
        initNavMenu();
        try {
            mDrawerToggle = new CustomActionBarDrawerToggle(this, mDrawer);
        } catch (RuntimeException e) {
            e.printStackTrace();
        }

        mDrawer.setDrawerListener(mDrawerToggle);
    }

    ....

    private void initNavMenu() {
        NavMenuAdapter mAdapter = MyDrawers.getDefaultDrawer(MyActivity.this, true);
        mDrawerList = (ListView) findViewById(R.id.drawer);
        mDrawerList.setBackgroundColor(getResources().getColor(R.color.GreenMoneyDark));
        if (mDrawerList != null) mDrawerList.setAdapter(mAdapter);
        mDrawerList.setOnItemClickListener(new DrawerItemClickListener(MyActivity.this, mDrawer, mDrawerList));
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        mDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        mDrawerToggle.onConfigurationChanged(newConfig);
    }

    private class CustomActionBarDrawerToggle extends ActionBarDrawerToggle {

        public CustomActionBarDrawerToggle(Activity mActivity,
                                           DrawerLayout mDrawerLayout) {
            super(mActivity, mDrawerLayout, R.drawable.action_drawer,
                    R.string.ns_menu_open, R.string.ns_menu_close);
        }

        @Override
        public void onDrawerClosed(View view) {
            bar.setTitle(getString(R.string.ns_menu_close));
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }

        @Override
        public void onDrawerOpened(View drawerView) {
            bar.setTitle(getString(R.string.ns_menu_open));
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }
    }

}

これは、実行時にクラッシュを有するがコンパイルされます

import android.support.v4.app.ActionBarDrawerToggle;

「 ____ 」が正しく、プロジェクトの依存関係に追加されていることに注意してください  「 __rsm__ "



Top 5 Respuesta

1reVerse @

あなたがhttp://developer.android.com/reference/android/support/v7/widget/Toolbar.html必要とする「 ____ 」のスーパーコールを使用するための必要はありません。これは代わりに次のコンストラクタを使用しての意味:

 import android.support.v7.app.ActionBarDrawerToggle;

あなたはこの1使用する必要があります。

 public CustomActionBarDrawerToggle(Activity mActivity,
                                               DrawerLayout mDrawerLayout) {
                super(mActivity, mDrawerLayout, R.drawable.action_drawer,
                        R.string.ns_menu_open, R.string.ns_menu_close);
            }

だから、基本的にあなたがしなければならない唯一のことは、 「 ____ 」のカスタムを削除することです。

R.drawable.action_drawer

ActionBarDrawerToggle http://developer.android.com/reference/android/support/v7/app/ActionBarDrawerToggle.html "新しい"を見る。



2Silverstorm @

ライブラリの依存関係に「 ____ 」だけ追加すると、プロジェクト内であなたが「 ____ 」パスであなたのSDKに見つけ、その後、このようにプロジェクト構造を構成するモジュールの依存関係を追加することができますモジュールをインポートすることもあります、十分ではありません

非推奨android.support.v4.app.ActionBarDrawerToggleを交換する方法

それ以外の場合のみサポートライブラリのクラスファイルを含んでおり、アプリがエラーの原因となって、他のリソースをロードすることができませんされている。

また逆はこれを置き換える示唆したように

public CustomActionBarDrawerToggle(Activity mActivity,
                                           DrawerLayout mDrawerLayout) {
            super(mActivity, mDrawerLayout,new Toolbar(MyActivity.this) ,
                    R.string.ns_menu_open, R.string.ns_menu_close);
        }

with

 java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/appcompat/R$attr;
            at android.support.v7.widget.Toolbar.<init>(Toolbar.java:190)
            at android.support.v7.widget.Toolbar.<init>(Toolbar.java:186)
3Abhi1227 @

あなたは「 ____ 」使用する必要があります

そして「 ____ 」コンストラクタを使用

引き出しのトグルボタンが暗くなった場合と、あなたはサポートライブラリで提供supportActionBarを使用する必要があります。

http://developer.android.com/training/basics/actionbar/setting-up.html :あなたはこのリンクからsupportActionbarを実装することができます

非推奨android.support.v4.app.ActionBarDrawerToggleを交換する方法