È necessario utilizzare un tema Theme.AppCompat (o discendente) con questa attività. La modifica a Theme.AppCompat provoca altri errori

Utilizzo appcompat v22.1.0 nella mia applicazione e utilizzo la barra degli strumenti. Tutto è andato bene quando uso Theme.AppCompat.Light.NoActionBar . Quando avvia l'implementazione di AlertDialog , AlertDialog errori come questo:

 java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at android.support.v7.app.AppCompatDelegateImplBase.onCreate(AppCompatDelegateImplBase.java:113) at android.support.v7.app.AppCompatDelegateImplV7.onCreate(AppCompatDelegateImplV7.java:146) at android.support.v7.app.AppCompatDialog.<init>(AppCompatDialog.java:47) at android.support.v7.app.AlertDialog.<init>(AlertDialog.java:92) at android.support.v7.app.AlertDialog$Builder.create(AlertDialog.java:882) at com.ramabmtr.map.findingmoo.MainActivity.onOptionsItemSelected(MainActivity.java:216) at android.app.Activity.onMenuItemSelected(Activity.java:2572) at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:353) at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:144) at android.support.v7.internal.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:99) at android.support.v7.internal.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:99) at android.support.v7.internal.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:74) at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:164) at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:740) at android.support.v7.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:802) at android.support.v7.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:153) at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:949) at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:939) at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:598) at android.support.v7.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:139) at android.view.View.performClick(View.java:4084) at android.view.View$PerformClick.run(View.java:16989) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4812) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:559) at dalvik.system.NativeStart.main(Native Method) 

Sulla base di questo errore, cambio il mio tema a Theme.AppCompat e metto questo:

  • Mostra il menu a comparsa sull'elemento "ActionBar"
  • come get l'image del profilo facebook nella mia applicazione android?
  • Servizio di accessibilità Android
  • Pulsanti multipli di fila in android?
  • Android: Parcelable.writeToParcel e Parcelable.Creator.createFromParcel non vengono mai chiamati
  • Come integrare Facebook nella mia applicazione Android?
  •  <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> 

    al mio tema. Ma produce lo stesso errore.

    Style.xml (vecchio)

     <resources> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> </style> </resources> 

    Style.xml (nuovo)

     <resources> <style name="AppTheme" parent="Theme.AppCompat"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> </style> </resources> 

    Chiunque sa come risolvere il problema?

    MainActivity.java

     package com.ramabmtr.map.findingmoo; import android.content.DialogInterface; import android.graphics.Typeface; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private Toolbar toolbar; private TextView toolbarTitle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); Typeface myTypeface = Typeface.createFromAsset(getAssets(), "fonts/panpizza.ttf"); toolbarTitle = (TextView) findViewById(R.id.toolbar_title); toolbarTitle.setTypeface(myTypeface); AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext()); builder.setTitle(R.string.filter_title); builder.setMessage("test"); builder.setPositiveButton(R.string.ok_button, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { dialog.dismiss(); } }); builder.setNegativeButton(R.string.cancel_button, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { dialog.dismiss(); } }); AlertDialog dialog = builder.create(); dialog.show(); } } 

  • Android: Come triggersre / disabilitare la connessione WiFi o la connessione a Internet in modo programmato
  • Qual è la differenza tra un listener e un ricevitore (Android)?
  • Android VideoView - Rileva punto di tempo nel video
  • android java.lang.IllegalStateException: Imansible leggere la row 0, col 0 da CursorWindow
  • vista premere onpress: cambiare colore di background nella printing? Come posso dimostrare che la vista è premuta?
  • Creazione di un connettore Https con il certificato lato client da PKCS # 10 con SpongyCastle
  • 11 Solutions collect form web for “È necessario utilizzare un tema Theme.AppCompat (o discendente) con questa attività. La modifica a Theme.AppCompat provoca altri errori”

    In sostanza, la tua attività utilizza la barra degli strumenti (che sostituisce la barra delle azioni) per cui è necessario utilizzare lo stile per l'attività che non dispone di una barra di azione come Theme.AppCompat.Light.NoActionBar . Se si dispone del proprio stile per la window di dialogo, è necessario ereditare il proprio tema AppCompat.

     <style name="myDialog" parent="Theme.AppCompat.Dialog"> <item name="android:windowNoTitle">true</item> ... </style> 

     AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.myDialog)); 

    Corretto il mio problema utilizzando MainActivity.this (o YourActivityName.this)

     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this); 

    Assicurati di aver già Theme.AppCompat e di estendere AppCompatActivity.

    Nel mio caso, questo incidente è stato causato perché stavo passando View.getContext().getApplicationContext() come Context al Builder . Questo è stato risolto utilizzando invece getActivity() .

    Theme.Light visto questa stessa exception utilizzando l' Activity e il tema Theme.Light . Il mio problema era un'importzione sbagliata, stavo usando il supporto. import android.support.v7.app.AlertDialog; invece di import android.app.AlertDialog;

    Il problema è dovuto al context che stai passando per build il dialogo Alert. Non utilizzare getApplicationContext (). Provate a utilizzare il AlertDialog.Builder builder = new AlertDialog.Builder(MainActiviy.this); Activity.Use AlertDialog.Builder builder = new AlertDialog.Builder(MainActiviy.this);

    Questo lavoro per me … dopo aver letto diverse risposte è stato …

    Modifica l'importzione come questa:

     import android.app.AlertDialog; 

    invece di

     import android.support.v7.app.AlertDialog; 

    questo dà errore Imansible aggiungere il token di window null non è per un'applicazione … quindi cambio il context del constructor

     AlertDialog.Builder builder = new 

    AlertDialog.Builder (getAplicationContext ()); a

     AlertDialog.Builder builder = new AlertDialog.Builder(*MainActivity.this*); 

    Aggiunta di Android: theme = "@ style / Theme.AppCompat" come questo in manifesto

     <activity android:theme="@style/Theme.AppCompat" android:name=".MainActivity" 

    problema risolto

    Devi passare invece al context del tuo attività per passare il tuo context. Provare con "questo" invece "context". Questo lavoro per me

    Nel mio caso, ho dovuto controllare e assicurarsi che tutti i file Theme.AppCompat usano Theme.AppCompat . Il file standard styles.xml aveva questo tema ma c'erano anche stili (v21) .xml, styles (v11) .xml e styles (sw600dp) .xml che sono stati generati automaticamente. La soluzione semplice sarebbe quella di copiare e incollare lo stile AppTheme predefinito personalizzato in queste cartelle.

    Ti auguro il meglio!

    Si prega di prestare attenzione a questo problema, ho trascorso lunghe ore a lungo su tale bug. succede solo su android 4.4.2, nonostante il fatto che sto usando il tema Appcompat ovunque, ho cercato di giocare con tutti gli stili e di utilizzare molti altri thread e risposte.

    il problema è stato causato da questa linea:

      <style name="LooperLabTheme" parent.theme="@style/Theme.AppCompat.Light.NoActionBar" theme="@style/Theme.AppCompat.Light.NoActionBar"> <style/> 

    si prega di notare il "parent.theme", l'ho copiata da una risposta nei primi giorni di lancio del progetto che sto cercando, dovrebbe essere "genitore" senza il tema.

      <style name="LooperLabTheme" parent="@style/Theme.AppCompat.Light.NoActionBar" theme="@style/Theme.AppCompat.Light.NoActionBar"> <style/> 

    Voglio solo aiutare altri che corrono da filo al thread per scoprire la correzione per il suo problema molto specifico, potrebbe essere la stessa del mio, risparmiare tempo.

    getSupportActionBar (). getThemedContext ()

     AlertDialog.Builder builder; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { builder = new AlertDialog.Builder(getSupportActionBar().getThemedContext(), android.R.style.Theme_Material_Dialog_Alert); } else { builder = new AlertDialog.Builder(getSupportActionBar().getThemedContext()); } builder.setTitle("Alert Dialog") .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }) .setIcon(android.R.drawable.ic_dialog_alert) .show(); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.