이 활동과 함께 Theme.AppCompat 테마 (또는 자손)를 사용해야합니다.


1004

안드로이드 스튜디오 0.4.5

사용자 정의 대화 상자 작성을위한 Android 문서 : http://developer.android.com/guide/topics/ui/dialogs.html

사용자 정의 대화 상자를 원하면 대신 대화 API를 사용하는 대신 활동을 대화 상자로 표시 할 수 있습니다. 간단히 액티비티를 만들고 <activity>매니페스트 요소 에서 테마를 Theme.Holo.Dialog로 설정하십시오 .

<activity android:theme="@android:style/Theme.Holo.Dialog" >

그러나 이것을 시도했을 때 다음 예외가 발생합니다.

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity

다음을 지원하고 있으며 분에 10보다 큰 것을 사용할 수 없습니다.

minSdkVersion 10
targetSdkVersion 19

내 스타일에는 다음이 있습니다.

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

그리고 내 매니페스트에서 활동에 대해 이것을 가지고 있습니다.

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:theme="@android:style/Theme.Holo.Light.Dialog"
            android:name="com.ssd.register.Dialog_update"
            android:label="@string/title_activity_dialog_update" >
        </activity>

레이아웃을 이미 완료 했으므로 이와 같은 대화 상자를 만드는 것은 내가 바랐던 일이었습니다.

누구 든지이 문제를 해결할 수있는 방법을 말해 줄 수 있습니까?


2
@ Raghunandan, 나는 이것에 익숙하지 않지만 내 스타일을보고 나는 다음과 같은 것을 가지고있다 : <style name = "AppTheme"parent = "Theme.AppCompat.Light.DarkActionBar"> 그리고 나는 다음과 같은 수입품을 가지고있다 : import android.support.v7 .app.ActionBarActivity; import android.support.v7.app.ActionBar; android.support.v4.app.Fragment 가져 오기; 그러나이 모든 것이 무엇을 의미하는지 잘 모르겠습니다.
ant2009

10
당신이 사용하는 AppCompatAPI 레벨 11 그냥 사용 아래 지원있는 행동에 대한 지원 라이브러리를 형성이다 android:theme="@style/AppTheme" >매니페스트에서 활동
Raghunandan

2
@Raghunandan의 말을 명확하게하기 위해 @ ant2009 :에서 귀하 AndroidManifest.xml의 활동에 지정하는 테마가 애플리케이션에 지정하는 테마를 대체하고 있습니다. 태그 에서 android:theme줄을 제거하십시오 <activity>.
cryptochronoconolite

3
이렇게하면 오류가 제거되지만 대화 주제가있는 활동 인 그가 원하는 곳으로 가지 못하게됩니다. 일반적인 규칙은 활동에 조치 표시 줄을 가지려면 AppCompat 테마가 있어야하고 Java 코드는 ActionBarActivity를 확장해야한다는 것입니다. 대화 상자 테마 활동과 같은 조치 표시 줄이 필요없는 활동이있는 경우 테마를 적용 할 수 있지만 Java 코드는 평범한 이전 활동을 확장해야합니다.
Bobbake4

1
이 경우 유일한 문제는 Dialog constractor에 제공하는 컨텍스트입니다. 내 대답을 참조하십시오. stackoverflow.com/a/51574281/232727
Vitaliy A

답변:


1124

이 문제가 발생하는 이유는 대화 상자 테마를 적용하려는 활동이 확장 ActionBarActivity되어 AppCompat테마를 적용 해야 하기 때문입니다.

업데이트 : 확장 AppCompatActivity하면이 문제가 발생합니다

이 경우 Java 상속을에서 ActionBarActivity로 변경하고 Activity대화 상자 테마를 Theme.AppCompat값 이 아닌 매니페스트에 그대로 둡니다.


일반적인 규칙은 코드가 이전 버전의 Android를 지원하도록하려면 AppCompat테마가 있고 Java 코드가 확장되어야한다는 것 AppCompatActivity입니다. Android의 최신 버전 및 기능에만 관심이있는 것과 같이이 지원이 필요없는 활동이있는 경우 테마를 적용 할 수 있지만 Java 코드는 일반 이전으로 확장해야합니다 Activity.


참고 : AppCompatActivity(또는 서브 클래스 ActionBarActivity) 에서 (으 )로 Activity변경하는 경우 "지원"이있는 다양한 통화도 "지원"이 없는 해당 통화로 변경해야합니다 . 따라서 대신에을 getSupportFragmentManager호출하십시오 getFragmentManager.


6
op는 appcompat를 사용하고 있으며,이 경우 질문 ActionBarActivity아래의 주석에서 import 문에서 표시되는 것을 확장해야합니다 .
Raghunandan

2
@Bursos Android Studio에서 새 프로젝트를 만들 때 이야기하는 경우 표준 구성의 버그라고 생각합니다.
Bobbake4

2
@ Bobbake4, 동일한 문제가있는 Im 이며이 솔루션은 저에게 효과적이지 않습니다. 문제는 ActionBarActivity를 중계하는 많은 클래스 (전체 프로젝트)가 있기 때문에 Activity를 확장 할 수 없다는 것입니다. 문제에 대한 다른 해결책이 있습니까? Thx
5er

6
@ 5er Java가 ActionBarActivity를 사용하는 경우 테마는 Theme.AppCompat를 확장해야합니다. Theme.AppCompat를 확장하는 몇 가지 기본 제공 테마가 있거나 직접 확장하여 수정할 수 있습니다. ActionBarActivity 부모를 제거하지 않으면 Theme.AppCompat를 사용할 수 없습니다.
Bobbake4

26
<style name = "AppTheme"스타일에서 parent = "Theme.AppCompat.Light.DarkActionBar">이 문제를 해결했습니다. :)
Harmeet Singh

545

파일 android:theme="@style/Theme.AppCompat.Light"의 응용 프로그램 태그에 추가 하기 만하면 AndroidManifest.xml됩니다.


2
이 코드에서 ant2009에는 Theme.AppCompat의 자손에서 확장되는 응용 프로그램으로 AppTheme이 설정되어 있습니다. 작동합니다. 내 장치에서 5.0으로 업그레이드 한 후에도 같은 문제가 발생하여 @ style / Theme.AppCompat.Light를 내 활동의 테마로 설정했습니다. 여기에없는 것…
speedynomads

36
이것은 Android Studio에 대한 올바른 답변이 아니지만 일부 경우 styles.xml 파일을 무시할 때 빠른 수정으로 작동합니다. Android Studio에서 테마를 정의하는 올바른 방법은 styles.xml 파일에서 테마를 정의한 다음 Android 매니페스트 파일이 해당 파일을 참조하고 기기에서 실행중인 Android 버전에 따라 선택하는 것입니다. 일반적으로 android : theme = "@ style / AppTheme"로 설정되며이 AppTheme는 styles.xml에서 <style name = "Theme.AppTheme"parent = "Theme.AppCompat.Light">을 참조합니다.
zeeshan

5
홀로 이외의 다른 것을 사용할 때 제목 표시 줄이 사라져서 실제로 작동하지 않습니다.
AndyD273

1
스낵 바를 사용 하여이 문제에 부딪 치십시오. 이것은 내 문제를 해결했습니다.
일함

2
@Martin 당신이 나와 같다면 (V21) styles.xml 파일에 넣는 것과 동일한 스타일 이름을 일반 파일 styles.xml에 추가하는 것을 잊었을 것입니다 (V21에만 해당하는 속성 제외). V21 폴더에 스타일을 선언하고 장치 버전이 다음과 같은 경우. 찾을 수 없으므로 예외가 발생했습니다.
letroll

275

위의 주석에서 @MarkKeen의 답변을 복사하면 동일한 문제가 발생합니다.

게시물 상단에 오류가 표시되어 경고 대화 상자를 추가 한 후 발생했습니다. 매니페스트에 모든 관련 스타일 정보가 있습니다. 경고 빌더에서 컨텍스트 참조를 변경하여 문제점을 해결했습니다.

new android.support.v7.app.AlertDialog.Builder(getApplicationContext())

에:

new android.support.v7.app.AlertDialog.Builder(this)

그리고 더 이상 문제가 없습니다.


5
나에게도 일어났다. 나는 단지 노력하고 있었고 당신의 대답은 실제로 효과가있었습니다! 그것이 작동하는 논리는 무엇입니까? 나는 정말로 이해하지 못했다.
kirtan403

6
또는 활동에서 직접 수행하지 않고 단편으로 AlertDialog을 빌드 getActivity()하는 경우 this위에서 제안한대로 사용 하지 않고 문제가 해결됩니다. 왜, 나는 이전 AlertDialog.Builder (xxx) 코드가 다른 유형이 전달되기를 원했거나 전달 된 것에 대해 덜 까다 롭다고 추측 할 수 있지만 현재 Builder ()는 실제로 Activity를 원합니다. Google은 이전 코드에 대한 설명서를 숨기거나 제거하기로 선택했기 때문에 아마도 v7.app 버전 사용을 장려하기 위해 노력할 것입니다.
앤 건

제안 된 것과 반대였습니다. 그리고 그것은 효과가 있었다 : P. 감사!
Harisewak

1
이것은 나를 위해 프로그램을 해결합니다. 또한 ArrayAdapter 또는 유사한 어댑터 클래스에있는 경우 getContext()대신 사용할 것입니다 this.
Ibrahim.H

1
이것은 내가 만난 진정한 솔루션입니다. 팁 :이 목적에서 getApplicationContext ()와 차이점을 언급하십시오.
prazeev

109

min sdk is 10. ActionBarapi level 11에서 사용할 수 있습니다. 따라서 10의 AppCompat경우 지원 라이브러리에서 사용 Theme.AppCompat하거나 같은 하위 항목 을 사용해야 합니다.

사용하다

android:theme="@style/Theme.AppCompat" >

또는 상단에 작업 표시 줄을 원하지 않으면

android:theme="@style/Theme.AppCompat.NoActionBar">

더 많은 정보 @

http://developer.android.com/guide/topics/ui/actionbar.html

편집하다:

op post를 잘못 읽었을 수 있습니다.

op가 활동 테마가있는 대화 상자를 원하는 것 같습니다. 따라서 Bobbake4가 이미 제안한대로 Activity대신 대신 확장하십시오 ActionBarActivity.

아래 링크에서 @ Dialog 속성을 살펴보십시오.

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/frameworks/base/core/res/res/values/themes.xml/


제안 해 주셔서 감사합니다. 나는 이미 그것을 실제로 시도했다. 그리고 같은 문제가 있습니다. 내 스타일 파일은 다음과 같습니다. <style name = "AppTheme"parent = "Theme.AppCompat">
ant2009

@ ant2009 당신은하지 않습니다. 활동을 위해 지원 라이브러리 AppCompat의 테마 사용
Raghunandan

이 테마를 올바르게 추가했는지 확실하지 않습니다. 그러나 다음 수입 명세서를 추가한다는 의미입니까? import android.support.v7.appcompat. *; 그러나 나는 그것을 시도했지만 여전히 동일한 예외로 끝나면서 잘못되었을 수 있습니다.
ant2009

@ ant2009 당신은 사용자 정의 대화 상자를 가질 수 있습니다. 그러나 전체 화면 대화를 원하십니까?
Raghunandan

나는 그것을 전체 화면으로하고 싶지 않았습니다. 대화 상자 일뿐입니다. 그러나 이제 문제가 해결되었습니다. Bobbake4가 맞았습니다. 어쨌든 노력해 주셔서 감사합니다. 유용한 조언을 주셨습니다. 그러나 여전히이 모든 지원 라이브러리 및 AppCompat과 혼동됩니다.
ant2009

99

다음과 같이 애플리케이션 컨텍스트를 사용중인 경우 :

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

다음과 같은 활동 컨텍스트로 변경하십시오.

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

LayoutInflater.from (<aplication context>)을 사용하는 경우에도 동일한 테마를 상속하도록 활동 컨텍스트 또는 제공된 LayoutInflater를 사용해야합니다.
lbarbosa

1
귀하의 솔루션이 저의 경우에 도움이되었습니다. getApplicationContext ()와 MainActivity.this의 차이점을 설명 할 수 있습니까?
kostyabakay

이 링크를 참조하십시오 : stackoverflow.com/questions/22966601/…
Darush

9
당신은 디스플레이 대화 상자에 활동이 아닌 상황, 필요
behelit

이 솔루션으로 해결
Mohamed Amin

45

내 테마가 AppCompat테마이고 내 활동이 AppCompatActivity(또는 Activity다른 답변에서 제안한대로) 이 문제가 발생했습니다 . 그래서 프로젝트를 정리하고 다시 빌드하고 다시 실행했습니다.

( 빌드-> 프로젝트 정리; 빌드-> 프로젝트 다시 빌드; 실행-> 실행 )

바보처럼 보이지만 이제는 잘 작동합니다 !

그것이 도움이되기를 바랍니다!


1
AppCompat 활동에 DialogFragment를 추가 한 후 정확히 같은 메시지가있었습니다. File, Invalidate Caches / Restart는 핀치로 고정했습니다.
halxinate

2
이 스레드에서 거의 모든 답변을 시도했습니다. 그러나이 겉보기 "멍청한"답변 만 작동합니다. 감사합니다!
Dika

27

이것이 나를 위해 고쳐 놓은 것입니다 : 매니페스트에서 테마를 지정하는 대신 onCreate확장되는 각 활동 에 대해 정의했습니다 ActionBarActivity.

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.MyAppTheme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_activity_layout);
...
}

다음 MyAppTheme은의 자손이며 Theme.AppCompatxml에 정의되어 있습니다. 테마는 super.onCreate및 이전에 설정되어야합니다 setContentView.


1
Robolectric이 자원을로드하려고 할 때 setTheme 행에서 NullPointerException을 발생시킵니다. 왜 그런지 알아?
Rhys Davis

@RhysDavis 스택 추적없이 말하기는 어렵지만, 먼저 setContentView를 원할까요? 이 경우이 수정 프로그램이 작동하지 않습니다.
k29

19

당신의 스타일에 가서 부모를 넣어

parent="Theme.AppCompat"

대신에

parent="@android:style/Theme.Holo.Light"

우리는 왜 표준 활동으로 이것을 할 수 있습니까? Android는 ICS 또는 Honecomb의 표준 활동에 작업 표시 줄을 배치하지 않았습니까? 최소 목표를 SDK ICS로 설정 한 경우 항상 ActionBarActivity를 사용해야합니까?
Andrew S

가져올 때 모든 유형의 테마를 사용할 수 있기 때문에 사용중인 유형 또는 기능에 어떤 테마를 사용해야하는지 확인하는 방법
blackHawk

16

제 경우에는 res 디렉토리에 values-v21 파일이 없습니다. 그런 다음 그것을 만들고 다음 코드를 추가했습니다.

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

나는 Oreo + 장치에서 프로젝트를 실행하고 있었고 이것 만이 나를 위해 일했습니다.
Nishant Soni

16

원하는 활동의 테마를 변경하십시오. 이것은 나를 위해 작동합니다 :

<activity
            android:name="HomeActivity"
            android:screenOrientation="landscape"
            android:theme="@style/Theme.AppCompat.Light"
            android:windowSoftInputMode="stateHidden" />

14

활동이 Theme.AppCompat을 사용했지만 삼성 장치 에서 이러한 충돌이 발생했습니다 . 근본 원인은 삼성 측의 이상한 최적화와 관련이 있습니다.

- if one activity of your app has theme not inherited from Theme.AppCompat
- and it has also `android:launchMode="singleTask"`
- then all the activities that are launched from it will share the same Theme

내 솔루션은 방금 제거 중이었습니다. android:launchMode="singleTask"


2
그냥이 문제에 부딪 치면 수정의 유효성을 검사하지 않았으며 오류를 재현 할 수 없습니다. 그러나 삼성 장치에서만이 오류가 발생합니다. 가장 많이 뿌리를 둔 것 같습니다, fwiw
danb

게시물 상단에 오류가 표시되어 경고 대화 상자를 추가 한 후 발생했습니다. 매니페스트에 모든 관련 스타일 정보가 있습니다. 경고 빌더에서 컨텍스트 참조를 변경하여 문제점을 수정했습니다. 새로운 android.support.v7.app.AlertDialog.Builder (getApplicationContext ())를 다음으로 변경했습니다. new android.support.v7.app.AlertDialog.Builder (this ) 그리고 더 이상 문제가 없습니다 ...
Mark Keen

이 최적화에 대해 더 자세한 정보 나 삼성 링크가 있습니까? 그런 다음 모든 활동이 Theme.AppCompat을 구현해야합니까, 아니면 테마가없는 활동이있을 수 있습니까?
AAverin

13

ActionBarActivity를 확장해야하는 경우 style.xml에 필요합니다.

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

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->

당신이 안드로이드와 같은 응용 프로그램의 메인 테마로 설정 한 경우 : 대신 Theme.Material.Light AppTheme.Base 다음은 "IllegalStateException이을 : 당신은이 활동과 Theme.AppCompat 테마 (또는 자손)를 사용합니다"얻을 것이다 오류입니다.


13

그냥 해

new AlertDialog.Builder(this)

대신에

new AlertDialog.Builder(getApplicationContext())

작업 솔루션! 이 답변으로 30 분을 알아낼 수 있습니다. 왜 새 AlertDialog.Builder (getApplicationContext ())를 사용하고 있습니까?
Erich García

어떤 유형이 this예상 되는지 설명하면 도움이 될 것 입니다.
Blago

12

나는 같은 문제가 있었지만 이것을 매니페스트에 넣었을 때 해결되었습니다 : android : theme = "@ style / Theme.AppCompat.

    <application
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name_test"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat">

        ...    

    </application>

10

내 경우에는 대화 상자를 표시하려고 할 때 이러한 문제가 발생했습니다. 문제는 컨텍스트에 있습니다. 이론적으로 getContextContext () 를 사용 하여 이론적으로 Activity 컨텍스트를 반환해야하지만 그렇지 않은 것으로 보이거나 테마가 적용되기 전에 컨텍스트를 반환합니다.

그래서 방금 getBaseContexts () 를 " this " 로 바꾸었고 이제는 예상대로 작동합니다.

        Dialog.showAlert(this, title, message,....);

나는 getApplicaitonContext ()를 전달하고 있었지만, 당신은 트릭을했다
Jeeva

9

<android:theme="@android:style/Theme.Dialog">appWidget 에서 대화 상자를 표시하는 데 사용되는 테마가있는 활동이 있었고 동일한 문제가 있습니다.

아래와 같이 활동 코드를 변경 하여이 오류를 해결했습니다.

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.Theme_AppCompat_Dialog); //this line i added
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dialog);
}

2
이것은 받아 들일 수있는 모든 복잡성과 대답없이 나에게 도움이되는 간단한 대답이었습니다.
Cory Trese


8

애플리케이션 또는 기본 컨텍스트가 아닌 새 경고 대화 상자를 작성하는 동안 활동 컨텍스트를 사용 중인지 확인하십시오.


7

나는이 문제도 있었고 그것을 고치기 위해 무엇을했고, 여전히 Holo 테마를 사용하는 것은 다음 단계를 수행하는 것이 었습니다.

먼저이 수입품을 대체했습니다.

import android.support.v7.app.AppCompatActivity;

이것으로 :

import android.app.Activity;

그런 다음 내 확장을 다음에서 변경했습니다.

public class MyClass extends AppCompatActivity {//...

이에:

public class MyClass extends Activity {//...

또한이 가져 오기를 변경해야했습니다.

import android.support.v7.app.AlertDialog;

이 수입품에 :

import android.app.AlertDialog;

그런 다음 활동 수준의 매니페스트에서 테마 태그를 사용할 수 있습니다.

android:theme="@android:style/Theme.Holo.Dialog" />

마지막으로 (v7 appCompat를 사용해야하는 다른 클래스가 프로젝트에없는 경우) 프로젝트를 정리 및 재 빌드하거나 앱 레벨의 gradle 빌드 파일에서이 항목을 삭제할 수 있습니다.

compile 'com.android.support:appcompat-v7:23.2.1'

v7 appCompat를 사용해야하는 다른 클래스가 프로젝트에 있으면 프로젝트를 정리하고 다시 빌드하십시오.


6

당신이 21 이전 SDK 버전에서 테마의 스타일로 재 디자인을 적용 할 때문에이에 온 한 ActionBarActivity요구 AppTheme만이 (이전 당신의 styles.xml의 변화에있다, 당신은 또한 당신의 AppTheme에 대한 자신 만의 정의를 방지하려면 이렇게 SDK 21)까지 이렇게하면 App Compat 테마를 상속받을 수 있습니다.

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

이를 위해 :

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

6
그거 했어. 여전히 문제가 있습니다. 더 많은 것이 있습니다.
Martin

6

테마 스타일 부모를로 변경하십시오.

 parent="Theme.AppCompat"

이것은 나를 위해 일했다 ...


6

그 오류에 대한 많은 해결책이 있습니다.

  1. ActionbarActivity 또는 AppCompatActivity 대신 Activity 또는 FragmentActivity 를 사용해야합니다.

  2. ActionbarActivity 또는 AppCompatActivity를 사용 하려면 styles.xml Theme.Holo.xxxxTheme.AppCompat.Light로 변경해야합니다 (필요한 경우 DarkActionbar에 추가 ).

당신은 작업 표시 줄이나에 대한 고급 속성이 필요하지 않은 경우 APPCOMPAT을 당신은 사용할 필요가 없습니다 실행 바 또는 APPCOMPAT을 .


6

Android 매니페스트에서 다음 코드 스 니펫으로 활동 테마를 AppTheme으로 변경하십시오.

<activity
  android:name=".MainActivity"
  android:label="@string/app_name"
  android:theme="@style/AppTheme">
</activity>

<activity android : name = ". MainActivity"android : label = "@ string / app_name"android : theme = "@ style / AppTheme"> </ activity>
shikha

6

조각에 AlertDialog를 원할 때입니다.

            AlertDialog.Builder adb = new AlertDialog.Builder(getActivity());
            adb.setTitle("My alert Dialogue \n");
            adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                  //some code

            } });
            adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                 dialog.dismiss();

                } });
            adb.show();

6

내 경험상 문제는 내가 대화를 보여준 맥락이었다. 버튼 안에 다음과 같이 AlertDialog를 인스턴스화합니다를 클릭하십시오.

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

그러나 컨텍스트가 올바르지 않아 오류가 발생했습니다. 이 방법으로 응용 프로그램 컨텍스트를 사용하여 변경했습니다.

선언 섹션에서 :

Context mContext;

onCreate 메소드에서

mContext = this;

그리고 마지막으로 AlertDialog가 필요한 코드에서 :

start_stop = (Button) findViewById(R.id.start_stop);
start_stop.setOnClickListener( new View.OnClickListener()
     {
                @Override
                public void onClick(View v)
                {
                    if (!is_running)
                    {
                        builder = new AlertDialog.Builder(mContext);
                        builder.setMessage("MYTEXT")
                                .setCancelable(false)
                                .setPositiveButton("SI", new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                    Task_Started = false;
                                    startTask();
                                    }
                                })
                                .setNegativeButton("NO",
                                        new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                        dialog.cancel();
                                    }
                                });
                        AlertDialog alert = builder.create();
                        alert.show();
                    }
            }
        }

이것이 나를위한 해결책입니다.


원래의 방식으로 응용 프로그램 컨텍스트를 사용해서는 안된다는 것이 맞습니다. 당신이 한 일은 대신 활동을 컨텍스트로 사용하는 것입니다. 그러나 이것은 응용 프로그램 컨텍스트 또는 그 하위 클래스가 아닙니다. 따라서 응용 프로그램 컨텍스트를 다른 방식으로 사용한다고 말하는 것은 옳지 않습니다.
Hod

5

이것은 나를 위해 일했다 :

<application
           android:allowBackup="true"
           android:icon="@mipmap/ic_launcher"
           android:label="@string/app_name"
           android:theme="@style/AppTheme" >
           <activity
               android:name=".MainActivity"
               android:label="@string/app_name"
               android:theme="@style/Theme.AppCompat.NoActionBar">

               <intent-filter>
                   <action android:name="android.intent.action.MAIN" />

                   <category android:name="android.intent.category.LAUNCHER" />
               </intent-filter>
           </activity>
</application>

5

귀하의 활동 확장하고 ActionBarActivity 필요 AppCompat.theme을 적용 할 수 있습니다. ActionBarActivity 에서 Activity 또는 FragmentActivity 로 변경 하면 문제가 해결됩니다.

작업 표시 줄을 사용하지 않으면 :

android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" 

5

나는이 같은 문제를 겪고 있었다. 맞춤 탐색 창을 만들고 있었기 때문입니다. 그러나 나는 이렇게 매니페스트에서 테마를 언급하는 것을 잊었다.

android:theme="@style/Theme.AppCompat.NoActionBar"

위의 테마를 매니페스트에 추가하자마자 문제가 해결되었습니다.


4

빠른 솔루션.

styles.xml에서 기본 테마 상위를 변경하십시오.

에서 교체

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

<style name="AppTheme" parent="Theme.AppCompat">

도움이되지 않습니다. 예외가 여전히 발생합니다
Eugene Gr. Philippov

3

이 솔루션은 저에게 효과적이었습니다.

디자인 라이브러리는 Support v4 및 AppCompat 지원 라이브러리에 의존하므로 gradle에서 appcompat 및 디자인 라이브러리에 다른 버전을 사용하지 마십시오.

사용하다

 compile 'com.android.support:appcompat-v7:23.0.0'
 compile 'com.android.support:design:23.0.0'

대신에

 compile 'com.android.support:appcompat-v7:23.0.0'
 compile 'com.android.support:design:23.1.0'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.