[英]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.