oncreate ()에서 대화 상자를 호출 할 때 솔리드 블랙 스크린
문제
나는 지금 몇 가지 다른 앱 에서이 문제를 겪었고 솔루션을 찾을 수없는 것 같습니다.
oncreate ()의 경우 Activity
, 대화 상자 테마를 사용하는 활동을 시작합니다. 모든 견해가 있습니다 (예 : 나는 EditText
키보드를 줄 것입니다.), 그들은 보이지 않습니다.
누구든지 아이디어가 있습니까?
어리석은 간단한 예, 재미를 위해 :
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startActivityForResult(new Intent(this, CredentialsInputActivity.class), 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// do some crap with the result, doesn't really matter what
}
}
CredentialsInputActivity
꽤 간단합니다 ... 단지 확장됩니다 Activity
그리고 테마가 설정되어 있습니다 @android:style/Theme.Dialog
매니페스트 파일에서.
해결책
이것이 a입니다 알려진 버그 1.5에서 (1.6에서 고정되었고 1.1에서는 문제가되지 않음). 버그는 이전 활동이 그려지기 전에 발생하는 새로운 활동에 대한 애니메이션에서 비롯되지만 "오래된"활동이 작업의 첫 번째 활동 인 경우에만 나타납니다.
해결 방법은 테마의 애니메이션을 비활성화하는 것입니다. 주요 대화 테마를 확장하는 새로운 테마 로이 작업을 수행하는 가장 간단한 방법.
res/value/trees.xml :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CupcakeDialog" parent="android:Theme.Dialog">
<item name="android:windowAnimationStyle">@null</item>
</style>
</resources>
그런 다음 androidmanifest.xml에서 참조하십시오.
<!-- ... -->
<activity
android:name=".CredentialsInputActivity"
android:label="@string/CredentialsInputActivity_window_title"
android:theme="@style/CupcakeDialog" />
<!-- ... -->
분명히, 당신은 애니메이션을 느슨하게하지만 적어도 당신은 그것을 볼 수 있습니다 :)
참고 : commonsware.com의 솔루션은 의견에 언급 한 경고와도 잘 작동했습니다.
다른 팁
여기서 추측 ...
제 생각에는 @android:style/Theme.Dialog
많은 배경이 반투명하게 설정되어 있습니다. 처음에, 당신의 MainActivity
의 배경은 검은 색입니다. 만약 startActivityForResult()
당신 앞에 차고 있습니다 MainActivity
당신의 문제를 설명 할 수 있습니다.
사용해보십시오 postDelayed()
a View
당신의 지연 startActivityForResult()
수백 밀리 초씩, 그것이 행동이 바뀌는 지 확인하십시오.