我正在使用bottomNavigationBar,并且有一个课程
navBase4 extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener
我所有使用bottomNavigationBar的类都实现了该类,并且该类可以突出显示所选图标,打开新的活动对象等。
例如,与navBase4位于同一目录中的另一个类是
public class userProfile extends navBase4
但是我刚刚创建了一个新类
public class updateInfo extends navBase4
位于包含navBase4的文件夹的子目录中。当我尝试实现navBase4要求的方法时,出现错误消息: 类'updateInfo'必须声明为抽象,或者必须在'navBase4
中实现抽象方法'getContentViewId()'为什么该类与navBase4在同一目录中却不能在子目录中使用?
navBase4代码:
public abstract class navBase4 extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener {
protected BottomNavigationView navigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getContentViewId());
navigationView = (BottomNavigationView) findViewById(R.id.navigation);
navigationView.setOnNavigationItemSelectedListener(this);
doCustomStuffOnStart();
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
//move to a new activity on item selected
}
protected void updateNavigationBarState(){
//update state
}
void selectBottomNavigationBarItem(int itemId) {
//do stuff
}
abstract int getContentViewId();
abstract int getNavigationMenuItemId();
abstract void doCustomStuffOnStart();
}
updateInfo代码-此代码引发错误
public class updateInfo extends navBase4 {
private TextView mTextMessage;
@Override
int getContentViewId() {
return R.layout.activity_user_profile;
}
@Override
int getNavigationMenuItemId() {
return R.id.navigation_user_profile;
}
@Override
void doCustomStuffOnStart() {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update_info);
mTextMessage = (TextView) findViewById(R.id.message);
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
}
}
文件目录
userProfile:
-navBase4
-userProfile
文件夹:子页面包含updateInfo
答案 0 :(得分:1)
与目录无关。 navBase4是一个抽象类。如果要成为一个非抽象的孩子,则需要为所有非抽象的方法提供一个实现。
此外,您的代码也将被破坏-如果您使用的系统返回这样的内容视图ID,则您不想在子类中调用setContentView。仅在父类中调用它。否则,由于内容视图被覆盖,父视图使用findViewById查找的视图将不在屏幕上。