[英]Android Java: How do I prevent my Dialog box from showing MainActivity appname briefly when the Dialog closes?
我对 Android 开发还很陌生,我创建了我的第一个“真实”应用程序,它执行以下操作:
MainActivity 处理额外数据,然后显示一个扩展Dialog
的ViewDialog
。 ViewDialog
有一个showDialog()
方法,它执行以下操作来设置和显示Dialog
:
protected void showDialog(final Activity activity) { dialog = new Dialog(activity); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setCancelable(false); dialog.setContentView(dialog_layout); // Set background color of the dialog ConstraintLayout currentLayout = (ConstraintLayout) dialog.findViewById(R.id.Dialog); // setup of views etc... // Finally dislay `Dialog` dialog.show(); // Method called to start a `DialogTimer` which extends `CountDownTimer` }
MainActivity 显示ViewDialog
如下:
public class MainActivity extends AppCompatActivity { private static Context appContext; private static ViewDialog notify; protected void onCreate(Bundle savedInstanceState) { // methods and processing etc... // time to display dialog notify = new ViewDialog(mParameters, mThemeHandler ); // ******************** Show dialog box ******************* notify.showDialog(activity: this); // showDialog just calls `Dialog.show()` notify.ApplyTheme(); }
当计时器到期或用户按下按钮时, ViewDialog
将关闭,应用程序将使用以下代码完成:
mButton1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { CancelTimer(); activity.finishAndRemoveTask(); dialog.dismiss();
问题是,当ViewDialog
被关闭时,我偶尔会看到一条消息,显示在 AndroidManifest 文件中设置的活动android:label
。
我不确定为什么会发生这种情况,但我假设它在ViewDialog
关闭时显示MainActivity
布局的某些项目,它使用它自己的dialog_layout
布局文件。
我摆弄了很多不同的东西并更改了代码/布局等,但我无法找到我的错误。
有哪些指针和提示可以帮助我解决这个问题? 如果需要,我很乐意提供更多详细信息。
布局和清单文件在这里:
您可以通过在 AndroidManifest.xml 中的元素上将 android:theme 属性设置为 @android:style/Theme.NoTitleBar 来实现此目的,如下所示:
<activity android:name=".Activity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
您发布的代码不足以弄清楚为什么会发生这种情况,但是有一个通用的解决方案看不到活动标题(即在清单的 label 字段中设置)。
在您的 styles.xml 中声明一个新主题,例如
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowContentOverlay">@null</item>
</style>
然后让它成为你活动的主题,就像这样
<activity
...
android:name="boha.notify.MainActivity"
android:theme="@style/AppTheme.NoActionBar">
...
</activity>
虽然我不是 100% 确定(因为这种行为可以在您的活动的实际代码中改变),但我认为它可能会有所帮助。
我希望它会有所帮助。
notify.setOnDissmissListener({CancelTimer()
activity.finishAndRemoveTask()
dialog.dismiss()})
事实证明,如果我改变:
public class MainActivity extends AppCompatActivity {
至
public class MainActivity extends Activity {
问题消失了。 我不知道为什么,但我会接受它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.