Kemarin (17-10-2014) saya telah memperbarui Android SDK dan support-library-v4.jar
dari Aplikasi saya, sekarang saya mendapatkan peringatan penghentian terkait ActionBarDrawerToggle
, membaca dokumentasi sepertinya saya harus menggunakan ActionBarDrawerToggle
in support-library-v7.appcompact.jar
.
Berikut beberapa bagian dari Aktivitas saya yang dapat menjadi relevan:
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()
}
}
}
Saya telah mencoba menyalin dukungan-library-v7 dan mengganti
import android.support.v4.app.ActionBarDrawerToggle;
dengan
import android.support.v7.app.ActionBarDrawerToggle;
ini telah menyebabkan masalah kompilasi di
public CustomActionBarDrawerToggle(Activity mActivity,
DrawerLayout mDrawerLayout) {
super(mActivity, mDrawerLayout, R.drawable.action_drawer,
R.string.ns_menu_open, R.string.ns_menu_close);
}
Jadi saya sudah coba ganti R.drawable.action_drawer
dengan
public CustomActionBarDrawerToggle(Activity mActivity,
DrawerLayout mDrawerLayout) {
super(mActivity, mDrawerLayout,new Toolbar(MyActivity.this) ,
R.string.ns_menu_open, R.string.ns_menu_close);
}
ini mengkompilasi tetapi macet di Runtime dengan
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)
Catatan yang android-support-v7-appcompat.jar
ditambahkan dengan benar dalam dependensi proyek
android
android-support-library
AndreaF
sumber
sumber
Jawaban:
Menambahkan hanya
android-support-v7-appcompat.jar
ke dependensi perpustakaan tidak cukup, Anda juga harus mengimpor dalam proyek Anda modul yang dapat Anda temukan di SDK Anda di jalan\android-sdk\extras\android\support\v7\appcompat
dan setelah itu menambahkan dependensi modul mengkonfigurasi struktur proyek dengan cara inijika tidak disertakan hanya file kelas pustaka dukungan dan aplikasi tidak dapat memuat sumber daya lain yang menyebabkan kesalahan.
Selain itu sebagai reVerse disarankan ganti ini
dengan
sumber
Anda tidak perlu menggunakan panggilan super
ActionBarDrawerToggle
yang membutuhkan Bilah Alat . Ini berarti alih-alih menggunakan konstruktor berikut:Anda harus menggunakan ini:
Jadi pada dasarnya satu-satunya hal yang harus Anda lakukan adalah menghapus kebiasaan Anda
drawable
:Lebih lanjut tentang ActionBarDrawerToggle "baru" di Documents (klik) .
sumber
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/appcompat/R$styleable; at android.support.v7.app.DrawerArrowDrawable.<init>(DrawerArrowDrawable.java:64) at android.support.v7.app.ActionBarDrawerToggle$DrawerArrowDrawableToggle.<init>(ActionBarDrawerToggle.java:469) at android.support.v7.app.ActionBarDrawerToggle.<init>(ActionBarDrawerToggle.java:222) at android.support.v7.app.ActionBarDrawerToggle.<init>(ActionBarDrawerToggle.java:150)
android-support-v7-appcompat.jar
properti proyek Anda -> Java Build Path -> Order and Ekspor? Selain itu mungkin membantu untuk memindahkan v7-appcompat ke atas.android-support-v7-appcompat.jar
ke dependensi proyek dengan cara yang sama dukungan-v4 (jika tidak bahkan tidak mengkompilasi)compile "com.android.support:appcompat-v7:21.0.0"
kebuild.gradle
file Anda dan Anda siap melakukannya.kamu harus menggunakan
import android.support.v7.app.ActionBarDrawerToggle;
dan gunakan konstruktor
dan jika tombol sakelar laci menjadi gelap maka Anda harus menggunakan supportActionBar yang disediakan di perpustakaan dukungan.
Anda dapat menerapkan supportActionbar dari tautan ini: http://developer.android.com/training/basics/actionbar/setting-up.html
sumber
import android.support.v7.app.ActionBarDrawerToggle;
berhasil untuk saya. Meskipun saya biasanya mengimpor otomatis, yang itu tidak impor otomatis.import android.support.v4.app.ActionBarDrawerToggle;
Insted dari
Kamu bisa memakai
sumber