【发布时间】:2014-10-07 18:44:25
【问题描述】:
我在多个活动中使用相同的 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)编辑并更改为if(!(this instanceof DogActivity)),以便人们了解instanceof检查的重要性。 -
我不确定我是否理解...
DogActivity、CatActivity等应该是儿童班吗?还是它们只是随意的活动?
标签: java android android-activity android-actionbar