Jer*_*gan 5 android android-theme android-dialog
我现在在几个不同的应用程序中遇到了这个问题,我似乎无法找到解决方案.
如果,在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
}
}
Run Code Online (Sandbox Code Playgroud)
CredentialsInputActivity是非常直接的...只是扩展Activity并@android:style/Theme.Dialog在清单文件中设置主题.
事实证明,这是1.5中的一个已知错误(在1.6中修复,在1.1中从来没有问题).该错误源于在绘制旧活动之前发生的新活动的动画,但它仅在"旧"活动是任务中的第一个活动时才会出现.
解决方法是禁用主题的动画.最简单的方法是使用扩展主对话框主题的新主题来实现它.
RES /值/的themes.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CupcakeDialog" parent="android:Theme.Dialog">
<item name="android:windowAnimationStyle">@null</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
然后在AndroidManifest.xml中引用它:
<!-- ... -->
<activity
android:name=".CredentialsInputActivity"
android:label="@string/CredentialsInputActivity_window_title"
android:theme="@style/CupcakeDialog" />
<!-- ... -->
Run Code Online (Sandbox Code Playgroud)
显然,你放松了动画,但至少你可以看到:)
注意:commonsware.com的解决方案也很好用我在评论中提到的警告.
| 归档时间: |
|
| 查看次数: |
3436 次 |
| 最近记录: |