繁体   English   中英

Android Java:当对话框关闭时,如何防止我的对话框短暂显示 MainActivity appname?

[英]Android Java: How do I prevent my Dialog box from showing MainActivity appname briefly when the Dialog closes?

我对 Android 开发还很陌生,我创建了我的第一个“真实”应用程序,它执行以下操作:

  • 启动 MainActivity
  • MainActivity 处理额外数据,然后显示一个扩展DialogViewDialog 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM