gpt4 book ai didi

android - 导航的 BaseActivity

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:26 25 4
gpt4 key购买 nike

我正在构建一个用于导航的基础 Activity ,并且想要一些灵活的东西,因此该 Activity 指示要展开哪个布局的基础 Activity 。

我有以下内容

public abstract class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

private int mLayoutRes;

protected void setLayout(int layoutRes) {
mLayoutRes = layoutRes;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(mLayoutRes);

// Layout implements toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null){
setSupportActionBar(toolbar);
}


DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
// The layout implements the nav
if (drawer != null){
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}

}
// Other Nav code ommitted as its too verbose
}

然后布局从 Activity 中传递如下

public class Home extends BaseActivity {

private final String TAG = "Home";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.setLayout(R.layout.activity_home);
super.onCreate(savedInstanceState);
// Other Activity code
}
}

有没有更好的方法来实现这一点?也许设置一个带有内容框架的基本布局并膨胀到其中?

如有任何建议,我们将不胜感激。

最佳答案

可以关注BaseActivity来自 Google IO 应用程序。只需重写 setContentView 就不需要 setLayout

这是我的 BaseActivity

package com.vtcmobile.kqviet.activity;


public class BaseActivity extends AppCompatActivity {

private Toolbar toolbar;

private DrawerLayout drawerLayout;
private ActionBarDrawerToggle drawerToggle;
private NavigationView navigationView;
protected Context mContext;


public NavigationView getNavigationView() {
return navigationView;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = BaseActivity.this;

}

@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
initToolbar();
}

private void initToolbar() {
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}

private void setUpNav() {
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
drawerToggle = new ActionBarDrawerToggle(BaseActivity.this, drawerLayout, R.string.app_name, R.string.app_name);
drawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);

navigationView = (NavigationView) findViewById(R.id.navigation);


// Setting Navigation View Item Selected Listener to handle the item
// click of the navigation menu
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

public boolean onNavigationItemSelected(MenuItem menuItem) {

// Checking if the item is in checked state or not, if not make
// it in checked state
if (menuItem.isChecked())
menuItem.setChecked(false);
else
menuItem.setChecked(true);

// Closing drawer on item click
drawerLayout.closeDrawers();

// Check to see which item was being clicked and perform
// appropriate action
Intent intent;
switch (menuItem.getItemId()) {

case R.id.xxxx:

return true;



}
return false;
}
});

// Setting the actionbarToggle to drawer layout

// calling sync state is necessay or else your hamburger icon wont show
// up
drawerToggle.syncState();

}

@Override
public void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
setUpNav();

drawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
drawerToggle.onConfigurationChanged(newConfig);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (drawerToggle.onOptionsItemSelected(item))
return true;

// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}




}

关于android - 导航的 BaseActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33009469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com