Android 在扩展baseActivity中创建onCreate
基本活动Android 在扩展baseActivity中创建onCreate,android,Android,基本活动 public abstract class BaseActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener { protected BottomNavigationViewEx navigationView; @Override protected void onCreate(Bundle savedInstance
public abstract class BaseActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener {
protected BottomNavigationViewEx navigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getContentViewId());
navigationView = findViewById(R.id.bnve);
navigationView.setOnNavigationItemSelectedListener(this);
navigationView.enableAnimation(false);
navigationView.enableShiftingMode(false);
navigationView.enableItemShiftingMode(false);
navigationView.setTextVisibility(true);
}
@Override
protected void onStart() {
super.onStart();
updateNavigationBarState();
}
@Override
public void onPause() {
super.onPause();
overridePendingTransition(0, 0);
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.item1) {
Intent intent1 = new Intent(this, MainActivity.class);
startActivity(intent1);
} else if (item.getItemId() == R.id.item2) {
Intent intent2 = new Intent(this, test2.class);
startActivity(intent2);
} else if (item.getItemId() == R.id.item3) {
Intent intent3 = new Intent(this, test3.class);
startActivity(intent3);
} else if (item.getItemId() == R.id.item4) {
Intent intent4 = new Intent(this, test4.class);
startActivity(intent4);
} else if (item.getItemId() == R.id.itemcen) {
return false;
}
return true;
}
private void updateNavigationBarState(){
int actionId = getNavigationMenuItemId();
selectBottomNavigationBarItem(actionId);
}
void selectBottomNavigationBarItem(int itemId) {
MenuItem item = navigationView.getMenu().findItem(itemId);
item.setChecked(true);
}
abstract int getContentViewId();
abstract int getNavigationMenuItemId();
}
主要活动
public class MainActivity extends BaseActivity {
@Override
int getContentViewId() {
return R.layout.activity_main;
}
@Override
int getNavigationMenuItemId() {
return R.id.item1;
}
}
我有这个基本活动,所有其他活动都与主活动相同
public class MainActivity extends BaseActivity {
@Override
int getContentViewId() {
return R.layout.activity_main;
}
@Override
int getNavigationMenuItemId() {
return R.id.item1;
}
}
我的问题是,我不知道如何在每个活动中编写代码,因为当我在活动中添加onCreate方法时,它不起作用,底部导航栏会丢失,并按预期停止工作
这就是我如何在创建时添加onCreate
public class MainActivity extends BaseActivity {
@Override
int getContentViewId() {
return R.layout.activity_main;
}
@Override
int getNavigationMenuItemId() {
return R.id.item1;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
将此添加到基本活动中
abstract void onCreateFinished();
在onCreate()的最后一行中调用此函数
然后在子类中可以执行任何操作。使用onpostreate()不要覆盖Create(),因为如果每个活动的布局都是相同的,只在基本活动中使用onCreate()一次,只需在基类中添加一个抽象方法即可
abstract void onCreateFinished();
abstract void onViewReady(Bundle b);
onCreate(Bundle saveIns){
.....
at the last line call the abstract method
onViewReady(savins);
}
然后在你的
AnotherActivity extends BaseActivity{
@overrride
void onViewReady(Bundle b){
//do stuff
}
}
演示如何添加onCreate只需在BaseActivity中创建一个抽象方法并在onCreate中调用,在MainActivity中重写相同的方法并执行必要的操作,然后在MainActivity中删除onCreate不调用
setContentView(R.layout.activity\u main)代码>在main活动中
。因为在uper.onCreate(savedInstanceState)中代码>它已经设置了内容视图,并操作您的导航视图
。然后在main活动中调用setContentView
后,Vladyslav Matviienko当我删除setContentView时,它起作用了,但当我在创建应用程序时,在里面添加了一个按钮崩溃了。查看崩溃堆栈跟踪以获取崩溃的原因谢谢你的回答,但你能进一步解释我不太明白怎么做吗