Как отобразить пользовательский диалог при запуске приложения?

#java #android #dialog #launch #android-application-class

#java #Android #диалог #запуск #android-application-class

Вопрос:

Иногда я хочу отобразить диалоговое окно при запуске приложения. Для этой цели я создал пользовательский диалог с именем LoginDialog и использую класс приложения java. Однако у меня возникают проблемы с отображением этого диалога. Во-первых, я не могу вызвать getsupportfragmentmanager() или что-то подобное. Кроме того, код отвечает, что LoginDialog не имеет метода show, который, как я думал, был стандартной операцией класса AppCompatDialogFragment. Приветствуются любые советы о том, как решить эту проблему!

Код:

 public class ApplicationClass extends Application {
    
@Override
    public void onCreate() {
        super.onCreate();

        SharedPreferences sharedPreferences = getSharedPreferences("Settings", MODE_PRIVATE);
        SharedPreferences.Editor sEditor = sharedPreferences.edit();
        if (sharedPreferences.getInt("EmailVer", 0) == 5) {
            showDialog();
        }
        Log.i("Abertura", "onCreate fired");
    }
    private void showDialog() {
        LoginDialog loginDialog = new LoginDialog();
        loginDialog.show(get);
    }
}
  

Ответ №1:

Может быть, попробовать показать диалог в классе Activity? Вы можете загрузить SharedPreferences и проверить, хотите ли вы отображать диалоговое окно в классе приложения, но показывать диалоговое окно в Activity. Это будет выглядеть так:

ApplicationClass:

 import android.app.Application;
import android.util.Log;

public class ApplicationClass extends Application
{
    private boolean showDialog;

    public boolean getShowDialog()
    {
        return showDialog;
    }

    @Override
    public void onCreate()
    {
        super.onCreate();
        Log.i("MyTag", "onCreate Application");

        // check if You want dialog. Main logic here
        showDialog = true;
    }
}
  

MainActivity:

 import android.app.AlertDialog;
import android.os.Bundle;
import android.util.Log;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (((ApplicationClass) getApplication()).getShowDialog()) //get application and show dialog if `showDialog` is true
        {
            Log.i("MyTag", "Show dialog");
            new AlertDialog.Builder(this)
                    .setTitle("Title")
                    .setMessage("Message")
                    .show();
        }
        else
        {
            Log.i("MyTag", "Do not show dialog");
        }
    }
}