2015-06-19 2 views
1

У меня есть приложение для учета баллов, в котором родительская активность позволяет пользователю вводить пользовательские имена команд.Подтверждение навигации

enter image description here

Пользователь может вести счет во время игры.

enter image description here

Если пользователь нажал кнопку назад, а в деятельности по поддержанию счета (для возврата к активности селектора команды), я реализовал подтверждение в связи с потерей данных скоринга:

@Override 
public void onBackPressed() { 
    new AlertDialog.Builder(this) 
      .setIcon(android.R.drawable.ic_dialog_alert) 
      .setTitle("Return to team selector") 
      .setMessage("Returning to the team selector will reset the scores. Are you sure " + 
        "you want to continue?") 
      .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
      { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        finish(); 
       } 

      }) 
      .setNegativeButton("No", null) 
      .show(); 
} 

Я хотел бы реализовать аналогичное подтверждение, когда пользователь «перейдет» к родительскому элементу (т. Е. Селектору команды), так как будет такая же потеря скоринга данных. Тем не менее, я столкнулся с такими проблемами.

Есть ли аналогичная функция «onUpPressed», которую я не могу найти? Любые другие рекомендации относительно того, как я могу это решить, оценены.

ответ

1

Да, вы можете это сделать ...

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      onBackPressed(); 
    } 
    return super.onOptionsItemSelected(item); 
} 
+0

Если вы в фрагменте вы должны вызвать 'getActivity() onBackPressed();. ' – Moinkhan

1

В андроиде нет onUpPressed. Вам нужно написать его в методе onOptionsItemSelected и обрабатывать его там.

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()){ 
     case R.id.home: 
      new AlertDialog.Builder(this) 
       .setIcon(android.R.drawable.ic_dialog_alert) 
       .setTitle("Return to team selector") 
       .setMessage("Returning to the team selector will reset the scores. Are you sure " + 
         "you want to continue?") 
       .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
       { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         NavUtils.navigateUpFromSameTask(this); 
         return true; 
        } 

       }) 
       .setNegativeButton("No", null) 
       .show(); 
    } 

    return super.onOptionsItemSelected(item); 
} 
1

Override этот метод

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     if (id == android.R.id.home) { 
      // do your stuff here for Upnavigation 
      onBackPressed(); 
     } 
     return super.onOptionsItemSelected(item); 
    } 
Смежные вопросы