簡體   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