Я использую тот же tabBar для нескольких видов деятельности. И поскольку для onOptionsItemSelected
существует обширная логика, я хочу написать соответствующие методы один раз, а затем повторно использовать их. Поэтому я решаю создать суперкласс под названием CustomActionBarActivity
, а затем продлить его действие детьми. Одна из проблем, с которыми мне нужна помощь, - это как я могу определить, какой из них вызвал вызов onOptionsItemSelected
? Чтобы разъяснить, я представлю общий код, а затем неудачную попытку решения.Как определить, какой ребенок вызвал метод родителя
Вот общий код
public class CustomActionBarActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.tab_dog:
startActivity(new Intent(this, DogActivity.class));
return true;
case R.id.tab_cat:
startActivity(new Intent(this, CatActivity.class));
return true;
case R.id.tab_mouse:
startActivity(new Intent(this, MouseActivity.class));
return true;
case R.id.tab_goose:
startActivity(new Intent(this, GooseActivity.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
неудачная попытка
Если я стараюсь, например,
case R.id.tab_dog:
if(!(this instanceof DogActivity))
startActivity(new Intent(this, DogActivity.class));
тогда я получаю ошибку компиляции таким образом, что CustomActionBarActivity является несовместим с DogActivity. Спасибо за любую помощь, которую вы можете предоставить.
Я отредактировал и изменил 'if (this instanceof DogActivity)' to 'if (! (This instanceof DogActivity)), поэтому люди могут получить значение проверки' instanceof'. – learner
Я не уверен, что понимаю ... «Собственные действия», «CatActivity» и т. Д. Должны быть дочерними классами? Или это просто произвольные действия? –