java - 活动开始时加载片段
问题描述
我正在遵循一个博客中的教程来创建片段。我创建了三个片段,但是当 Mainactivity 加载时......它是空的,只有当点击抽屉菜单中的任何项目时,才会加载片段。我想在开始时加载任何片段[考虑 ConnectFragment]。
这是我的代码
public class MainActivity extends AppCompatActivity {
private String[] mNavigationDrawerItemTitles;
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
Toolbar toolbar;
private CharSequence mDrawerTitle;
private CharSequence mTitle;
android.support.v7.app.ActionBarDrawerToggle mDrawerToggle;
Fragment fragment = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTitle = mDrawerTitle = getTitle();
mNavigationDrawerItemTitles= getResources().getStringArray(R.array.navigation_drawer_items_array);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
setupToolbar();
fragment = new ConnectFragment();
DataModel[] drawerItem = new DataModel[3];
drawerItem[0] = new DataModel(R.drawable.connect, "Connect");
drawerItem[1] = new DataModel(R.drawable.fixtures, "Fixtures");
drawerItem[2] = new DataModel(R.drawable.table, "Table");
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setHomeButtonEnabled(true);
DrawerItemCustomAdapter adapter = new DrawerItemCustomAdapter(this, R.layout.list_view_item_row, drawerItem);
mDrawerList.setAdapter(adapter);
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerLayout.setDrawerListener(mDrawerToggle);
setupDrawerToggle();
}
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectItem(position);
}
}
private void selectItem(int position) {
switch (position) {
case 0:
fragment = new ConnectFragment();
break;
case 1:
fragment = new FixturesFragment();
break;
case 2:
fragment = new TableFragment();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(mNavigationDrawerItemTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
Log.e("MainActivity", "Error in creating fragment");
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void setTitle(CharSequence title) {
mTitle = title;
getSupportActionBar().setTitle(mTitle);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
void setupToolbar(){
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
void setupDrawerToggle(){
mDrawerToggle = new android.support.v7.app.ActionBarDrawerToggle(this,mDrawerLayout,toolbar,R.string.app_name, R.string.app_name);
//This is necessary to change the icon of the Drawer Toggle upon state change.
mDrawerToggle.syncState();
}
}
我试过了
fragment = new ConnectFragment();
但它仍然没有在开始时加载。
提前致谢。
解决方案
不需要创建fragment
实例,onCreate
您可以删除以下行
fragment = new ConnectFragment();
简单地说,您应该像下面这样调用selectItem()
内部方法。onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// .....
setupDrawerToggle();
// here you need call selectItem() method
selectItem(0) // you can change default fragment by changing parameter (0/1/2) as you want
}
推荐阅读
- mysql - 为什么 SQL GROUP_CONCAT 查询不起作用?
- javascript - Node.js - 使用 bcrypt 生成散列密码
- graph-theory - Cytoscape.js - 获取以编程方式生成的节点的有效位置
- api - 如何将垃圾邮件恢复到 Microsoft Graph API 中的原始文件夹?
- javascript - TypeError:无法读取未定义的属性“目标”,收到错误以检查 div 是否尚未填充
- google-apps-script - 使用 if 和 multicriteria 增加范围(一列)中的值 - Google Apps 脚本
- c# - Nuget Build,什么时候用PackageName.Targets和PackageName.props?
- java - 在 Java 中运行 HTTPUrlConnection 的一些链接下载缓慢
- powerbi - 获取我根据销售日期支付的费用
- django - 如何将 django 表单 inlineformset 调用到 django 模板中