2015-11-02 1 views
3

Я искал все интернет-сайты, чтобы исправить эту ошибку, но я не мог. Я просто хочу, чтобы создать AlertDialog с двумя кнопками Да и №Как исправить эту ошибку: вам нужно использовать тему Theme.ppCompat (или потомок) с этим действием.

Это мой код:

import android.content.DialogInterface; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class DialogActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_dialog); 

    Button btnDialog= (Button) findViewById(R.id.btnDialog); 
    btnDialog.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showDialogMessage(); 
     } 
    }); 
} 

private void showDialogMessage(){ 

    AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext()); 
    // Add the buttons 
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      // User clicked OK button 
     } 
    }); 
    builder.setNegativeButton("NO", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      // User cancelled the dialog 
     } 
    }); 

    AlertDialog dialog = builder.create(); 
    dialog.show(); 
} 
} 

И это мой стиль:

<resources> 

<!-- Base application theme. --> 
<style name="AppTheme" parent="AppTheme.Base"> 
    <!-- Customize your theme here. --> 
</style> 

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

это мой стиль (v21):

<resources> 
<!-- extend one of the Theme.AppCompat themes --> 
<style name="AppTheme" parent="AppTheme.Base"> 
    <!-- customize the color palette --> 
    <item name="android:colorPrimary">@color/colorPrimary</item> 
    <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="android:colorAccent">@color/colorAccent</item> 
    <item name="android:windowTranslucentStatus">true</item> 
    <item name="android:colorControlHighlight">@color/colorHighLight</item> 
</style> 
</resources> 

это проявляется:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.saly.rastari" > 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".DialogActivity" 
      android:label="@string/title_activity_test" 
      android:screenOrientation="portrait" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity>  
    </application> 
</manifest> 

При нажатии на кнопку Dialog я получаю эту ошибку:

11-02 04:36:55.941 24352-24352/? E/AndroidRuntime: FATAL EXCEPTION: main 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime: Process: com.irannara.pda.pdaassistant, PID: 24352 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:309) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:278) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:252) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:76) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at android.support.v7.app.AlertController.installContent(AlertController.java:216) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:240) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at android.app.Dialog.dispatchOnCreate(Dialog.java:373) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at android.app.Dialog.show(Dialog.java:274) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at com.irannara.pda.pdaassistant.DialogActivity.showDialogMessage(DialogActivity.java:42) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at com.irannara.pda.pdaassistant.DialogActivity.access$000(DialogActivity.java:10) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at com.irannara.pda.pdaassistant.DialogActivity$1.onClick(DialogActivity.java:21) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at android.view.View.performClick(View.java:4780) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at android.view.View$PerformClick.run(View.java:19866) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at android.os.Handler.handleCallback(Handler.java:739) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:95) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:135) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:5254) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Native Method) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:372) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
11-02 04:36:55.959 718-718/? E/EGL_emulation: tid 718: eglCreateSyncKHR(1209): error 0x3004 (EGL_BAD_ATTRIBUTE) 

ни одна из этих ссылок не могли бы помочь мне:

и многое другое.

Как я могу это исправить?

+0

показать нам свой манифест, чтобы помочь вам – Moudiz

+0

Попробовали ли вы использовать поддержку AlertDialog? – Arslan

+0

yes import android.support.v7.app.AlertDialog; –

ответ

13

Если у вас есть еще стили файлов в сторону другой ценности папки, как «values-v11», «values-v14» ... Редактировать тему также и попытаться очистить приложение перед Бег.

Отредактировано: От вашего изменения активности getApplicationContext() в this:

AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext()); 

в

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

Поскольку диалог также должен расширяет Appcompat тему.

+0

У меня только стиль (v21), где я должен редактировать? –

+0

Если отредактирован весь файл стилей, см. Мой отредактированный ответ. – NamNH

+0

Большое вам спасибо @John, моя проблема решена, потому что 'getApplicationContext()' –

0

попробовать это ....

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"> 
+0

не работает, у меня все еще есть эта ошибка. –

+0

попробуйте расширить Activity вместо AppCompatActivity –

+0

Я не могу этого сделать, потому что у меня есть setSupportActionBar (панель инструментов); getSupportActionBar(). SetDisplayShowHomeEnabled (true); –

0

в файле style.xml добавьте ниже code-

style.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="AppTheme.Base" 
      parent="@style/Theme.AppCompat.Light"> 
    </style> 
</resources> 

также определить тему, как это в вашей деятельности

<activity 
      android:name=".DialogActivity" 
      android:label="@string/title_activity_test" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/AppTheme.Dialog"> 

ИЛИ

<activity 
      android:name=".DialogActivity" 
      android:label="@string/title_activity_test" 
      android:screenOrientation="portrait" 
      android:theme="@style/AppTheme"> 

чистый проект и запустить снова ..

+0

нет, не работает, все еще получаю эту ошибку –

-1

Попробуйте добавить следующее к Proguard-правилам:

-keep public class com.google.android.gms.** 
-keep class android.support.v7.** { *; } 
-keep interface android.support.v7.** { *; } 

-dontwarn com.google.android.gms.** 

Если вы используете

com.google.android.gms:play-services-ads:8.1.0

взглянуть на Google Issue 190237

0

Если кто-то испытывает эту проблему с деятельностью, попробуйте явно настроить тему для своей деятельности.

<activity android:name=".activities.BLEControlActivity" android:theme="@style/Theme.AppCompat.DayNight"></activity> 
Смежные вопросы

 Смежные вопросы