AlertDialog не отображается в другой активности

Функция:

Диалоговый метод оповещения был создан для уведомления пользователя о состоянии учетной записи, следовательно, диалоговое окно появится, когда пользователь вышел из системы удаленно. Кроме того, в приложении есть 4 действия; следовательно, когда учетная запись зарегистрирована, появится диалоговое окно, когда пользователь решит перейти к следующему действию. После этого всплывающее диалоговое окно вернет пользователя на страницу входа в систему после подтверждения.

Выпуск:

Диалоговое окно оповещения не появляется, когда учетная запись пользователя вышла из системы, bttn для выхода из системы был изменен на вход в систему, а учетные данные sharedpreference были очищены. Он по-прежнему позволяет пользователю перемещаться по приложению, приложение будет отображаться через некоторое время.

Что пошло не так с кодами и предложениями?

Код

//Build an AlertDialog to notify user on Session Logout status
static Builder alertDialog(final Activity act,final Intent yourintent){
    Log.i("RootActivity:alertDialog","******Session Logout Info******");
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(act);
    alertDialog.setTitle("Sign In For Spacetobe Services");
    alertDialog.setMessage("For security reasons, you have been automatically logged out after 20 minutes of inactivity." +
            "To access Spacetobe services, please sign in again.");
    alertDialog.setCancelable(false);
    //SETTING OF OK BUTTON
    alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            //Intent yourintent = new Intent(Intent.ACTION_VIEW);
            //yourintent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
            act.startActivity(yourintent);//Return page to PROPERTYACTIVITY
            }
   }); return alertDialog;
}

//LOGOUT METHOD & CLEARING OF SHARED PREFERENCE CREDENTIALS
public void IdleLogout(){
    Log.i("RootActivity:IdleLogout()","******APP LOGGEDOUT******");

    //SharedPreference method cleared
    Log.i("RootActivity:IdleLogout()","******loginButton is set******");
    setloginButton();   // Change logout button to login
    checkTimeout=true; // Global timeout is true
 //RootActivity.alertDialog(this,getCustomIntent(PropertyActivity.class)).create().show();
}

//EDITED VERSION TO GET LOGOUT DIALOG WHEN USER TRIES TO NAVIGATE TO OTHER ACTIVITY BY BACK BTTN WHEN LOGGED OUT
@Override
public void onBackPressed(){

    Log.i("RootActivity:onBackPreseed()","******Back bttn has been selected******");

    if (checkTimeout==true){
        Log.i("RootActivity:onCreate(Bundle savedInstanceState)","******Timeout=true******");
        RootActivity.alertDialog(this,getCustomIntent(PropertyActivity.class)).create().show();
        checkTimeout = false;
    }return;
}
//END OF EDITED VERSION TO GET LOGOUT DIALOG WHEN USER TRIES TO NAVIGATE TO OTHER ACTIVITY BY BACK BTTN WHEN LOGGED OUT

// For each new individual activity
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    context = this;

    //EDITED VERSION TO GET START TIME FOR EACH USER INTERACTION WITH THE ACTIVITY
    startTime=System.currentTimeMillis();
    Log.i("RootActivity:onCreate(Bundle savedInstanceState)","******startTime=******"+startTime);
    //END OF EDITED VERSION TO GET START TIME FOR EACH USER INTERACTION WITH THE ACTIVITY

    //EDITED VERSION TO GET LOGOUT DIALOG WHEN USER TRIES TO NAVIGATE TO OTHER ACTIVITY WHEN LOGGED OUT
    if (checkTimeout==true){
        Log.i("RootActivity:onCreate(Bundle savedInstanceState)","******Timeout=true******");
        RootActivity.alertDialog(this,getCustomIntent(PropertyActivity.class)).create().show();
        checkTimeout = false;
    }return;
    //END OF EDITED VERSION TO GET LOGOUT DIALOG WHEN USER TRIES TO NAVIGATE TO OTHER ACTIVITY WHEN LOGGED OUT
}

1 ответ

Решение

Переместите код диалога в метод onResume(), в это время активность видна.

Другие вопросы по тегам