BaseActivity
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();
}
MainActivity
public class MainActivity extends BaseActivity {
@Override
int getContentViewId() {
return R.layout.activity_main;
}
@Override
int getNavigationMenuItemId() {
return R.id.item1;
}
}
我有这个BaseActivity,所有其他活动都与MainActivity
相同我的问题是,我不知道如何在每个活动中编码,因为当我在活动中添加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);
}
答案 0 :(得分:0)
在您的基本活动
中添加此内容abstract void onCreateFinished();
在onCreate();
的最后一行调用它然后在您的子类中,您可以做任何事情。
答案 1 :(得分:0)
使用onPostCreate()不要覆盖Create(),就好像每个活动的布局都相同,只在基本活动中使用onCreate()一次
答案 2 :(得分:0)
只需在Base类中添加一个抽象方法
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
}
}