onCreate在扩展baseActivity中

时间:2018-04-17 09:52:26

标签: android

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);

}

3 个答案:

答案 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
   }
}