#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");
}
}
}