MainShared Backpress не работает только в первый раз - PullRequest
0 голосов
/ 04 ноября 2019

Я использовал SharedPref для хранения строк входа в систему, но он не запускается впервые, значит, когда я пытаюсь удалить и установить приложение снова, это не работает. Что не работает: при входе в систему Кликните по нему фильмы на главном Экране активности, но когда он когда-нибудь нажмет кнопку «Назад», он снова откроет мой Экран входа в систему.

Что работает: Когда я впервые делаю вход, а затем мойоткрывается главное действие, я закрываю приложение вручную из недавнего раздела, а затем снова открываю его, оно прекрасно работает для меня, то есть оно хранит значение моего экрана входа в систему, а затем при повторном нажатии оно работает нормально, оно выходит из приложения

Я пытался использовать методы back press () finish () для выхода из приложения, как только я произвел успешный вход в систему, и я нажимаю back, нажав на моей основной Деятельности. Мои вопросы - я просто хочу знать, почему sharedperf работает нормально, когда я закрываюсь. приложение вручную и снова открыть его, нажмите кнопку «Назад» в моем основном действии, оно выходит из приложения. Но когда я удаляю его или переустанавливаю, оно не работает, или даже мой метод обратного нажатия не работает для выхода из приложения.

открытый класс SessionManagement {

// Shared Preferences
SharedPreferences pref;

// Editor for Shared preferences
SharedPreferences.Editor editor;

// Context
Context _context;



// Shared pref mode
int PRIVATE_MODE = 0;

// Sharedpref file name
private static final String PREF_NAME = "AndroidHivePref";

// All Shared Preferences Keys
private static final String IS_LOGIN = "IsLoggedIn";

// User name (make variable public to access from outside)
public static final String KEY_NAME = "name";

// Email address (make variable public to access from outside)
public static final String KEY_EMAIL = "email";

// Constructor
public SessionManagement(Context context) {
    this._context = context;
    pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
    editor = pref.edit();
}

/**
 * Create login session
 */
public void createLoginSession(String name, String email) {
    // Storing login value as TRUE
    editor.putBoolean(IS_LOGIN, true);

    // Storing name in pref
    editor.putString(KEY_NAME, name);

    // Storing email in pref
    editor.putString(KEY_EMAIL, email);

    // commit changes
    editor.commit();
}

/**
 * Check login method wil check user login status
 * If false it will redirect user to login page
 * Else won't do anything
 */
public void checkLogin() {
    // Check login status
    if (!this.isLoggedIn()) {
        // user is not logged in redirect him to Login Activity
        Intent i = new Intent(_context, Logins.class);
        // Closing all the Activities
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);


        // Add new Flag to start new Activity
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        // Staring Login Activity
        _context.startActivity(i);
    }
  /*  else{
        Intent it = new Intent(_context,MainActivity.class);
        _context.startActivity(it);
    }*/

}
/**
 * Quick check for login
 **/
// Get Login State
public boolean isLoggedIn() {
    return pref.getBoolean(IS_LOGIN, false);
}

}

Мой основной класс программирования

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  SessionManagment management = new SessionManagement(getApplicationContext());
    management.checkLogin();
public void onBackPressed() {
    finish();}
public void finish() {
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        super.finishAndRemoveTask();
    }
    else {
        super.finish();       

ВМой проект Я использовал заставку, на которой после всплеска в течение 5 секунд он перемещается к основному действию, где мое управление сеансом проверяет наличие входа, если данные для входа недоступны, затем открывает мое действие для входа, в противном случае открывается мое основное действие, но почему оно включеноработает над тем, когда я устанавливаю приложение в первый раз.

...