2014-09-26 2 views
0

У меня есть активность, которая выполняет основную операцию входа и аутентификацию. Я могу перейти к другому действию при успешном входе в систему. Я загружаю ту же самую активность, если логин завершается с ошибкой или если пользователь вводил неправильные значения.Как удалить/убить несколько копий одной и той же активности в Android?

Проблемы Я облицовка

Когда Логин не удается, я показываю ту же деятельность. Если это делается несколько раз, отображается такая же активность. Когда я нажимаю назад, появляется несколько копий того же самого действия, прежде чем я смогу полностью выйти. Как удалить/убить предыдущие действия, которые накапливаются?

Ниже мой код в MainActivity.java

@Override 
 
public void onClick(View v) { 
 

 
if(!email.getText().toString().isEmpty() && (!password.getText().toString().isEmpty())) 
 
{ 
 
    isValid = login_validation(email.getText().toString()); 
 
    if (isValid) { 
 
     SharedPreferences sharedpreferences = getSharedPreferences(
 
              "MyData", Context.MODE_PRIVATE); 
 
     SharedPreferences.Editor editor = sharedpreferences.edit(); 
 
     editor.putString("email", email.getText().toString()); 
 
     editor.putString("password", password.getText().toString()); 
 
     editor.commit(); 
 
     Toast.makeText(MainActivity.this, "Login Successful",Toast.LENGTH_LONG).show(); 
 
     Intent intent = new Intent(MainActivity.this,Second_Activity.class); 
 
     startActivity(intent); 
 
    } 
 
    else 
 
    { 
 
     Toast.makeText(MainActivity.this, "Login Failed. Please enter correct               credentials",Toast.LENGTH_LONG).show(); 
 
     Intent intent = new Intent(MainActivity.this,MainActivity.class); 
 
     startActivity(intent); 
 
    } 
 
} 
 
else 
 
{ 
 
    Toast.makeText(MainActivity.this, "Email/Password cannot be empty",Toast.LENGTH_LONG).show(); 
 
    Intent intent = new Intent(MainActivity.this, 
 
     MainActivity.class); 
 
     startActivity(intent); 
 
} 
 

 

 
} 
 
});

Спасибо заранее

+0

Лучший способ сделать это - использовать AsyncTask. Методы задачи Async очень хорошо подходят для этой операции. То, что я понимаю в операции входа в систему, заключается в том, что вы где-то подключаетесь к серверу, и это должно быть сделано из основного потока - следовательно, еще одна действительная точка для использования задачи Async. – Skynet

+0

intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); or call finish() перед началом нового действия Или просто очистите поля пользовательского интерфейса – SKT

+0

finish() работает нормально .. Но что, если у меня есть 5 экранов .. Скажите ABCDE Теперь я нахожусь в E, если все мои работы выполнены Я перехожу к активности B, используя приведенный ниже код startActivity (intent); this.finish(); этот код будет убивать только E-активность, но я тоже хочу убить действия C, D ... Как это сделать? –

ответ

0

Dont открытую же активность, используя ниже код

Intent intent = new Intent(MainActivity.this,MainActivity.class); 
startActivity(intent); 

Вы уже этот экран так просто удалить выше линии

+0

Затем как снова загружать ту же активность .. Перезагружается ли MainActivity снова? –

+0

Не могли бы вы рассказать мне, почему вы хотите перезагрузить? – Palak

+0

О да, я понял. Мой плохой ... Я могу просто сбросить поля в макете. Я думаю, что это сработало бы –