2012-04-20 5 views
10

Я хочу создать приложение для своего института.Как избежать возврата в макет входа, нажав кнопку/кнопку назад?

Проблема в следующем: мое приложение будет иметь два макета (логин и приборная панель).

Студенты могут правильно заполнить форму для входа в систему, войти в панель управления, нажать кнопки и заполнить другие поля. Но если пользователь затем нажимает кнопку «Назад», он не должен возвращаться на экран входа в систему, но остается на панели мониторинга или не работает, выйдите из приложения.

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

Как вы могли это сделать?

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

+0

Если на ваш вопрос будет дан ответ, вы должны принять ответ и открыть новый вопрос для своего редактирования. Это станет более заметным. –

+0

Спасибо за этого человека, ваш ответ это нормально, но я не хотел этого! – SoldierCorp

+0

@soldierCorp У меня такая же проблема. Можете ли вы помочь мне решить эту проблему. Я смущен решением, которое вы приняли. https://stackoverflow.com/questions/45183038/restrict-multiple-login-for-same-user-without-logout. – seon

ответ

5

Я реализовал что-то похожее, используя SharedPreferences. Я сделал это:

LoginActivity

SharedPreferences settings; 
public void onCreate(Bundle b) { 
    super.onCreate(b); 
    settings = getSharedPreferences("mySharedPref", 0); 
    if (settings.getBoolean("connected", false)) { 
     /* The user has already login, so start the dashboard */ 
     startActivity(new Intent(getApplicationContext(), DashBoardActivity.class)); 
    } 
    /* Put here the login UI */ 
} 
... 
public void doLogin() { 
    /* ... check credentials and another stuff ... */ 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putBoolean("connected", true); 
    editor.commit(); 
} 

В вашем DashBoardActivity переопределить метод onBackPressed. Это приведет вас от DashBoardActivity к вашему начальному экрану.

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    startActivity(intent); 
} 

Надеюсь, это поможет.

4

Одна из идей заключается в том, чтобы сначала запустить панель управления, а затем запустить вход через нее в новом Activity, если вы обнаружите, что пользователь не выполнил вход в систему. Затем вы можете пропустить диалоговое окно входа в систему. Если вы установите noHistory="true" на вход Activity в своем манифесте, это будет предотвращено повторным появлением на задней панели.

1

Переместить задачу, содержащую это действие, в конец стека действий. Порядок действий в задаче не изменяется.

@Override 
public void onBackPressed() { 
    moveTaskToBack(true); 
    super.onBackPressed(); 
} 
Смежные вопросы