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

액티비티를 다이얼로그 스타일로 바꾸면 죽습니다.

0 추천

MainActivity에서 [버튼]을 누르면  popupActivity 로 화면이 넘어 가는 간단한 예제를 만들었는데 

popupActivity의 크기를 바꾸고 싶어서 다이얼로그 스타일로 변경 하였습니다.

그러자 버튼을 눌러 화면을 바꾸면 죽어 버립니다.

해결 방법이 없나요?

소스코드는 다음과 같습니다.

1.메니페스트

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

 

2.메인

public class MainActivity extends AppCompatActivity {

    Button button;

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

        button = (Button)findViewById(R.id.button);
        //button.setOnClickListener((View.OnClickListener) this);
    }

//    @Override
    public void onClick(View v){
        startActivity(new Intent(this, PopupActivity.class));
    }
}

3.팝업

public class PopupActivity extends AppCompatActivity {

    Button btnClose;

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

        btnClose = (Button)findViewById(R.id.btnClose);
        //btnClose.setOnClickListener((View.OnClickListener) this);
    }

    public void onClickClose(View v){
        finish();
    }
}

 

 

sysout (160 포인트) 님이 2019년 5월 16일 질문

1개의 답변

0 추천

자문 자답 입니다.

참고한 웹문서에서는 스타일을 아무거나 주더라도 다이얼로그면 문제 없다고 적혀 있었습니다.

하지만 다음과 같이 수정 하니까 동작 합니다.

android:theme="@style/Theme.AppCompat.Light.Dialog"
sysout (160 포인트) 님이 2019년 5월 16일 답변
웹문서도 틀린 말은 아닙니다.
죽은 이윤
PopupActivity  가  AppCompatActivity 를 상속받았다보니,
 AppCompat 속성의 테마를 지정해 줘야 해서 그렇습니다.

AppCompatActivity 를 상속 받는게 아니라 기본 Activity 를 상속받은
PopupActivity extends Activity 로 바꾸시면,
@android:style/Theme.Dialog 를 테마로 지정해도 동작 될 겁니다.^^.
...