마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 앱 테마 에러 질문입니다.

0 추천

마쉬멜로우 권한 문제 때문에 권한 팝업을 띄우는 기능을 추가하고 있는데요

 

권한이 뜨고 난 다음 모두 거부를 하고 나면 크래시가 납니다.

 

Process: com.eon, PID: 1194

java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=0, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.yon.PermissionsActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

at android.app.ActivityThread.deliverResults(ActivityThread.java:4925)

at android.app.ActivityThread.handleSendResult(ActivityThread.java:4968)

at android.app.ActivityThread.access$1600(ActivityThread.java:222)

at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1849)

at android.os.Handler.dispatchMessage(Handler.java:102)

at android.os.Looper.loop(Looper.java:158)

at android.app.ActivityThread.main(ActivityThread.java:7229)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

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

at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:343)

at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:312)

at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:277)

at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:80)

at android.support.v7.app.AlertController.installContent(AlertController.java:214)

at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:258)

at android.app.Dialog.dispatchOnCreate(Dialog.java:578)

at android.app.Dialog.show(Dialog.java:314)

at android.support.v7.app.AlertDialog$Builder.show(AlertDialog.java:949)

at com.yn.PermissionsActivity.showMissingPermissionDialog(PermissionsActivity.java:108)

at com.yn.PermissionsActivity.onRequestPermissionsResult(PermissionsActivity.java:78)

at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:7263)

at android.app.Activity.dispatchActivityResult(Activity.java:7141)

at android.app.ActivityThread.deliverResults(ActivityThread.java:4921)

at android.app.ActivityThread.handleSendResult(ActivityThread.java:4968) 

at android.app.ActivityThread.access$1600(ActivityThread.java:222) 

at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1849) 

at android.os.Handler.dispatchMessage(Handler.java:102) 

at android.os.Looper.loop(Looper.java:158) 

at android.app.ActivityThread.main(ActivityThread.java:7229) 

at java.lang.reflect.Method.invoke(Native Method) 

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

 

 

 저 부분 코드를 보니 다이얼로그에서 에러가 나는데 이게 어디가원인인지를 모르곘습니다. 에러메시지를 보니 앱 테마를 안써서 그런거 같은데

테마를 적용시키고 싶진 않지만 해결하려면 어떻게 적용을 해야되나요?

private void showMissingPermissionDialog() {
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(PermissionsActivity.this);
    dialogBuilder.setTitle(R.string.help);
    dialogBuilder.setMessage(R.string.string_help_text);
    dialogBuilder.setNegativeButton(R.string.quit, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            setResult(PERMISSIONS_DENIED);
            finish();
        }
    });
    dialogBuilder.setPositiveButton(R.string.settings, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            startAppSettings();
        }
    });
    dialogBuilder.show(); //에러부분
}

dfdfd

 

 

 

 

브루스웨인 (8,580 포인트) 님이 2016년 8월 2일 질문

1개의 답변

0 추천
 
채택된 답변
기본으로 values/styles.xml 에 아래의 내용이 존재하고

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

AndroidManifest.xml 에 android:theme="@style/AppTheme" 를 적용하면 됩니다.

styles.xml 이 업데이트 되었을 수도 있으니, 신규 프로젝트를 생성해서 이를 기준으로 작업하시는게  제일 나을 것 같습니다.
aucd29 (218,390 포인트) 님이 2016년 8월 2일 답변
브루스웨인님이 2016년 8월 3일 채택됨
...