Skip to main content

Displaying a Dialog Window

There are times when you need to display a dialog window to get a confirmation from the user. In this case , you can override the onCreateDialog() protected method defined in the Activity base class to display a dialog window. The following Try It Out shows you how.

1. Using Android Studio , create a new Android project and name it Dialog. When presented with the option , name the main activity DialogActivity.

2.Add the following theme in bold to the AndroidMainfest.xml file. Be sure to change all instances of "com.android" to whatever package name your project is using.

<?xml version="1.0" encoding="utd-8"?>
<manifest xmlns:android"http://schemas.android.com/apk/res/android" package="com.android.dialog">
     <application
          android:allowBackup="true"
          android:icon:="@mipmap/ic_launcher"
          android:label="@String/app_name"
          android:supportRtl="true"
          android:theme="@style/AppTheme" >
          <activity
               android:name=".DialogActivity"
               android:label="@string/app_name"
               android:theme="@style/Theme.AppCompat.Dialog" >
               <intent-filter>
                      <action android:name="android.intent.action.MAIN" />
                      <category android:name="android.intent.category.LAUNCHAR" />
               < / intent-filter>
          </activity>
     </application>
</manifest>

3. Compare your DialogActivity.java file to this:

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snacbar;
import android.support.v7.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.MenuItem;

public class DialogActivity extends AppCompatActivity
{
             @Override
             protected void onCreate(Bundle saveIntanceState)
             {
                         super.onCreate(saveInstaceState);
                         setContentView(R.layout.activity_dialog);
                         Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);
                         setSupportActionBar(toolbar);
 
                         FloatingActionButton fat = (FloatingActionButton) findViewById(R.id.fab);
                         fab.setOnclickListener(new View.OnClickListener() {
                                 @Override
                                 public void onClick(View view)
                                 {
                                         Snackbar.make(view, "Replace with your own action" ,
                                              Snackbar.LENGTH_LONG)
                                                      .setAction("Action",null).show();
                                  }
                         });
               }
              @Override
               public boolean onCreateOpationsMenu(Menu menu)
               {
                        // Inflate the menu; this adds items to the action bar if it is present.
                        getMenuInflater().inflate(R.menu_dialog, menu);
               }
              @Override
              public boolean onOpationItemSelected(MenuItem item)
              {
                      //Handle action bar Item clicks here. The action Bar will
                      //automatically handle clicks on the Home/Up button, so long
                      //as you specify a parent activity in AndroidManifest.xml.

                      int id = item.getItemId();

                      //notinspection SimplifiableIfStatement
                      if ( id == R.id.action_settings)
                      {
                                 return true;
                      }

                      return super.onOpationsItemSelected(item);
               }
}

4. Press Shift+F9 to debug the application on the Android emulator. Click the button to display the dialog.

How It Works

Android uses the Appcompat.Dialog theme to draw your standard activity as a free-floating dialog box.It would be very easy to modify this dialog to add some buttons if you needed to provide an OK or Cancel choice.

Notice also that theme is applied to the Activity , not the project. Therefore , you could have a project with multiple activities , and apply the dialog theme to just one of them.

Comments

Popular posts from this blog

Applying Styles and Themes to an Activity

By default , an activity is themed to the default Android theme. However , there been a push in recent year to adopt a new theme known as Material . The Material theme has a much more modern and clean look to it. There are two versions of the Material theme available to Android developers : Material Light and Material Dark , Either of these themes can be applied from the AndroidManifest.xml To apply one of the Material themes to an activity , simply modify the <Application> element in the AndroidManifest.xml file by changing the default android:theme attribute. (Please be sure to change all instances of "com.android" to whatever package name your project is using.) <?xml version="1.0" encoding="utf-8"?> <manifest xmls:android="http://schemas.android.com/apk/res/android"        xmlns:tools="http://schemas.android.com/tools"        package="com.android.activity101">        <application ...

Using Code Completion

Code completion is an invaluable tool that shows you contextual options for completing the piece of code that you are trying to write. For example, in the editor tab for the MainActivity.js file, locate the line that reads.          setContentView(R.layout.activity_main); Place your cursor after this line and press the Enter Key . On the new line , type the letter R , and then type a period, as shown here:          R. Android Studio Code Completion should display a list of values that you could use to try to complete the code statement. Figure shows what this list might look like . this is important if you are not entirely sure of the spelling of a method call or how to identify the different method signatures. NOTE if the code completion window does not open , press Ctrl + Space to force it to open. This is the same key combination used in some other IDEs for their versions of the code complet...

Now in Android

Android Studio 4.2 discharged to steady channel   Android Studio 4.2 is now available in the stable release channel. Read the blog for detailed information on what’s new, including a new tool to help migrate your project to the latest Android Gradle Plugin version. We’ve also enhanced lots of stuff such as Database Inspector , System Trace , SafeArgs support, Apply Changes, and the new project wizard. As always, download here and file issues here .           Hilt is stable and ready for production Manuel Vivo wrote about the stable release of Hilt , Android Jetpack’s recommended dependency injection (DI) solution for Android apps. Hilt is a simpler, more opinionated way to leverage the power of the Dagger DI library, eliminating boilerplate and reducing errors. It provides direct injection support for popular Jetpack libraries such as ViewModel, WorkManager, Navigation, and Compose. ( DI Basics , Documentation )   Google Play updates ...