2015-01-13 1 views
0

У меня есть actionBar, чем переходы между двумя фрагментами списка, называемыми «Все» и «Избранное». На макете actionBar они являются RadioButtons. «Все» - это список записей данных, а «Избранное» - это отфильтрованное подмножество этого списка. Когда в «Избранное» я хочу, чтобы кнопка возврата устройства всегда переходила к «Все». Как я могу это сделать? Вот некоторые из соответствующих кодов, если это помогает:Android back navigation for RadioButton

public class InstanceListActivity extends MyBaseActivity { 

    private InstanceListFragment _listFragment; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Create content from resource 
     setContentView(R.layout.activity_instance_list); 

     // Get ListFragment 
     _listFragment = (InstanceListFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.instance_list_fragment); 

     // Add Filter menu 
     ActionBar actionBar = getActionBar(); 
     if (actionBar != null) { 
      actionBar.setDisplayShowCustomEnabled(true); 
      actionBar.setCustomView(R.layout.actionbar_filter); 
      final RadioGroup favorites = (RadioGroup) actionBar.getCustomView() 
        .findViewById(R.id.filter); 
      if (favorites != null) { 
       favorites.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
        @Override 
        public void onCheckedChanged(RadioGroup group, int checkedId) { 
         if (checkedId == R.id.filter_favorites) { 
          _listFragment.filterFavorites(); 
         } else { 
          _listFragment.clearFilter(); 
         } 
        } 
       }); 
      } 
     } 
     // Handle search queries 
     if (getIntent() != null) { 
      handleIntent(getIntent()); 
     } 
    } 
... 
} 

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

ответ

1

Если я правильно понял ваш вопрос, переопределите метод onBackPressed() и обработайте что-то вроде этого.

В избранное.setOnCheckedChangeListener, сохранить boolean variable глобально, в этом действии. Например,

@Override 
public void onCheckedChanged(RadioGroup group, int checkedId) { 
if (checkedId == R.id.filter_favorites) { 
isFav=true; 
_listFragment.filterFavorites(); 

} else { 
isFav=false; 
_listFragment.clearFilter(); 
} 
} 

И переопределить метод onBackPressed() следующим образом.

@Override 
public void onBackPressed() { 
if(isFav){ 
    _listFragment.clearFilter(); 
}else{ 
    super.onBackPressed(); 
} 
} 

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

+0

Да, это так! Огромное спасибо. – BoltzmannBrain