2015-07-06 5 views
1

В моем приложении для Android у меня возникли проблемы с навигацией. Чтобы создать учетную запись в моем приложении, у меня есть 3 вида деятельности: A1-> A2-> A3. Когда активность A3 подтверждена, я перейду к активности A4, где я вошел в систему. Я хотел бы включить навигацию по истории от A3 до A2 и от A2 до A1, но поскольку я вошел в систему (A4), я не хочу, чтобы пользователь возвращался к любой из A3, A2, A1, используя собственный андроид. Если я установил noHistory на true на A3, зарегистрированный пользователь на операции A4 все равно сможет вернуться к активности A2. Если я установил noHistory true во всех действиях A1, A2, A3, пользователь не сможет вернуться, даже если он не вошел в систему ...Советы по навигации Android

Может ли кто-нибудь показать мне, как лучше всего это сделать ?

Заранее благодарен!

+1

Как просто переопределить 'onBackPressed', чтобы решить вашу проблему? –

+0

Рекомендуется ли? Вы хотите переопределить событие onBackPressed в работе A4? –

+1

Да, вот что я имею в виду, это классический способ сделать это. Вам нужен пример в качестве решения? –

ответ

1

Итак, я нахожу свой рабочий процесс совершенно ясно, и по этой причине, это довольно легко сделать что-то чистое:

Я хотел бы сделать что-то вроде этого:

// --- I'm in your A4 activity, do not change anything for the other activities ---- 

boolean isUserLoggedIn; 

// Modify the boolean when the user logs in 

@Override 
public void onBackPressed() { 
    if (isUserLoggedIn){ 
     // Let's say you want the user to return at the device root menu at this point 

     new AlertDialog.Builder(this) 
      .setTitle("Really Exit?") 
      .setMessage("Are you sure you want to exit?") 
      .setNegativeButton(android.R.string.no, null) 
      .setPositiveButton(android.R.string.yes, new OnClickListener() { 

       public void onClick(DialogInterface arg0, int arg1) { 
        Intent intent = new Intent(Intent.ACTION_MAIN); 
        intent.addCategory(Intent.CATEGORY_HOME); 
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        startActivity(intent); 
       } 
      }).create().show(); 
     } 

    } 
    else{ 
     // Should return to your previous activities if you set the history to true (what I recommend strongly) 
     super.onBackPressed(); 
    } 
} 

Я написал быстро на Vi (и не тестировал), поэтому, возможно, у вас будут небольшие ошибки, но в принципе это идея.

+0

отлично! благодаря ! –