Home » Android » Android Java: How do I prevent my Dialog box from showing MainActivity appname briefly when the Dialog closes?

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

Posted by: admin June 15, 2020 Leave a comment

Questions:

I’m fairly new to Android development and I’ve created my first “real” application that does the following:

  • Launches MainActivity
  • MainActivity processes Extra Data and then displays a ViewDialog that extends Dialog. ViewDialog has a showDialog() method that does the following to setup and display the 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 shows the ViewDialog as follows:

     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();
         }
    
  • When the timer expires or the user presses a button the ViewDialog is closed and the application is finished with the following code:

        mButton1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CancelTimer();
            activity.finishAndRemoveTask();
            dialog.dismiss();
    

The problem is that when the ViewDialog is dismissed I can occasionally see what looks like a message that is displaying the activities android:label that is setup in the AndroidManifest file.

Video of what is happening

I’m not sure why this happens, but I assume it’s displaying some item of the MainActivity layout when the ViewDialog closes that uses it’s own dialog_layout layout file.

I’ve fiddled with so many different things and changed code/layouts etc and I haven’t been able to find my error.

What are some pointers and hints that will help me fix this?
I’m happy to provide more details if needed.

The layout and manifest files are here:

How to&Answers:

You can achieve this by setting the android:theme attribute to @android:style/Theme.NoTitleBar on your element in your AndroidManifest.xml like this:

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

Answer:

The code you’ve posted is not enough to figure out why this is happening, but there is one universal solution not to see Activity title(that is is set in the label field of manifest).

Declare in your styles.xml a new theme like

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="android:windowContentOverlay">@null</item>
</style>

and after that make it to be the theme of your activity like this

 <activity
           ...
           android:name="boha.notify.MainActivity"
           android:theme="@style/AppTheme.NoActionBar">
           ...
</activity>

While I am not 100 percent sure(because this behavior can be altered in an actual code of your activity) I think it might help.

I hope it will help.

Answer:

It turns out that if I change:

public class MainActivity extends AppCompatActivity {

to

public class MainActivity extends Activity {

the problem goes away. I don’t know why, but I’ll take it.

Answer:

notify.setOnDissmissListener({CancelTimer()
    activity.finishAndRemoveTask()
    dialog.dismiss()})