Saya mendapatkan RuntimeException pada Android 2.3.5 tapi saya saya menggunakan Theme.AppCompat (res / values / themes.xml). Ini adalah teleponnya: http://www.gsmarena.com/samsung_galaxy_y_s5360-4117.php
<!-- res/values/themes.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Styled" parent="@style/Theme.AppCompat">
<item name="actionBarStyle">@style/QueryActionBar</item>
<item name="android:actionBarStyle">@style/QueryActionBar</item>
</style>
<style name="QueryActionBar" parent="@style/Widget.AppCompat.ActionBar">
<item name="background">@color/blueback</item>
<item name="android:background">@color/blueback</item>
<item name="backgroundSplit">@color/blueback</item>
<item name="android:backgroundSplit">@color/blueback</item>
</style>
</resources>
Ini adalah file untuk values-v11.
<!-- res/values-v11/themes.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="QueryTheme" parent="@android:style/Theme.Holo">
<!-- Any customizations for your app running on devices with Theme.Holo here -->
</style>
</resources>
Inilah kesalahannya.
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.txt2lrn.www/com.txt2lrn.www.LandingActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:102)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
at com.txt2lrn.www.LandingActivity.onCreate(LandingActivity.java:95)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
... 11 more
Maaf teman-teman, saya juga memiliki android: theme = "@ style / Theme.Styled" yang didefinisikan di AndroidManifest.xml.
Theme.Styled
?Jawaban:
Jika Anda memperluas ActionBarActivity di MainActivity, Anda juga harus mengubah tema induk di values-v11.
Jadi style.xml dalam values-v11 akan menjadi -
EDIT: Saya akan merekomendasikan Anda berhenti menggunakan ActionBar dan mulai menggunakan tata letak AppBar yang disertakan dalam Pustaka Dukungan Desain Android
sumber
Untuk menambahkan ActionBar Compat, aktivitas atau aplikasi Anda harus menggunakan tema @ style / Theme.AppCompat di AndroidManifest.xml seperti ini:
Ini akan menambah actionbar dalam aktivitas (atau semua aktivitas jika Anda menambahkan tema ini ke aplikasi)
Tetapi biasanya Anda perlu menyesuaikan bilah tindakan Anda. Untuk melakukan ini, Anda perlu membuat dua gaya dengan induk Theme.AppCompat, misalnya, "@ style / Theme.AppCompat.Light". Yang pertama adalah untuk api 11> = (versi android dengan build di android actionbar), yang kedua untuk api 7-10 (tidak ada build di actionbar).
Mari kita lihat gaya pertama. Ini akan ditempatkan di res / values-v11 / styles.xml . Ini akan terlihat seperti ini:
Dan Anda harus memiliki gaya yang sama untuk api 7-10. Ini akan ditempatkan di res / values / styles.xml , TETAPI karena level api itu belum tahu tentang item gaya actionbar android asli, kita harus menggunakan salah satunya, yang disediakan oleh support library. Item ActionBar Compat didefinisikan seperti android asli, tetapi tanpa bagian "android:" di depan:
Harap tandai bahwa, meskipun level api yang lebih tinggi dari 10 sudah memiliki bilah tindakan, Anda masih harus menggunakan gaya AppCompat. Jika tidak, Anda akan mengalami kesalahan ini saat peluncuran Acitvity di perangkat dengan Android 3.0 dan lebih tinggi:
Berikut ini tautan artikel asli ini http://android-developers.blogspot.com/2013/08/actionbarcompat-and-io-2013-app-source.html yang ditulis oleh Chris Banes.
PS Maaf untuk bahasa Inggris saya
sumber
Periksa dan pastikan Anda tidak memiliki folder nilai lain yang mereferensikan theme.styled dan tidak menggunakan tema AppCompat
yaitu
values-v11
foldersumber
Coba ini...
styles.xml
AndroidManifest.xml
sumber
Anda
Activity
memperluasActionBarActivity
yang membutuhkanAppCompat.theme
untuk diterapkan. Ubah dariActionBarActivity
menjadiActivity
atauFragmentActivity
, ini akan menyelesaikan masalah.sumber
Lakukan saja Build -> Clean Project. Saya pikir ini akan menyelesaikan masalah Anda.
sumber
Tentu saja. Tidak ada yang akan secara ajaib berlaku
Theme.Styled
untuk suatu aktivitas. Anda perlu mendeklarasikan aktivitas Anda - atau seluruh aplikasi Anda - menggunakanTheme.Styled
, misalnya,:sumber
Saya mengalami kesalahan ini ketika saya mencoba membuat DialogBox ketika beberapa tindakan diambil di dalam kelas CustomAdapter. Ini bukanlah sebuah Aktivitas, tetapi kelas Adaptor. Setelah 36 jam berusaha dan mencari solusi, saya menemukan ini.
Kirim Aktivitas sebagai parameter sambil memanggil CustomAdapter.
Tentukan variabel di Adaptor kustom.
Panggil konstruktor seperti ini.
Dan terakhir saat membuat kotak dialog di dalam kelas adaptor, lakukan seperti ini.
Saya harap ini membantu Anda
sumber
Saya baru saja memindahkan aplikasi saya dari ActionBarSherlock ke ActionBarCompat. Coba nyatakan tema lama Anda seperti ini:
Kemudian setel tema di AndroidManifest.xml Anda:
sumber
Saya mengalami crash seperti itu di Samsung perangkat meskipun aktivitasnya menggunakan Theme.AppCompat . Akar penyebabnya terkait dengan pengoptimalan aneh di sisi Samsung:
Solusi saya baru saja menghapus
android:launchMode="singleTask"
sumber
android:launchMode="singleTask"
.android:launchMode="singleTask"
dan semua aktivitas saya menggunakan tema AppCompat: /dalam kasus saya, saya membuat tampilan kustom yang saya tambahkan ke konstruktor tampilan kustom
konteks yang benar adalah aktivitas, jadi ubahlah menjadi:
atau
sumber
Untuk tampilan daftar saya, saya menggunakan Adaptor khusus yang memperluas ArrayAdapter. di listiview saya punya 2 tombol salah satu tombol sebagai Custom AlertDialogBox. Contoh: Activity parentActivity; Pembuat untuk Adaptor `
`memanggil Adaptor dari MainActivty
sekarang tulis alertdialog ur di dalam tombol ur yang ada di kelas Adapter
sumber
para resolver o meu problema, eu apenas adicionei na minha MainActivity ("Theme = Untuk memecahkan masalah saya, saya baru saja menambahkannya ke MainActivity (" Theme = "@ style / MyTheme" ") di mana MyTheme adalah nama tema saya
sumber