Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在扩展baseActivity中创建onCreate_Android - Fatal编程技术网

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时,它起作用了,但当我在创建应用程序时,在里面添加了一个按钮崩溃了。查看崩溃堆栈跟踪以获取崩溃的原因谢谢你的回答,但你能进一步解释我不太明白怎么做吗