gpt4 book ai didi

java - 如何在应用程序加载时实现默认 Activity ( fragment )。 (抽屉布局)

转载 作者:太空宇宙 更新时间:2023-11-04 10:44:03 25 4
gpt4 key购买 nike

我正在使用 fragment 并已成功设置所有 Activity 。一切功能齐全。

我的问题是,当应用程序最初启动时,我似乎无法加载默认布局或 fragment 类。

我尝试了一些方法,但结果很奇怪。这是我来自 MainActivity 的代码。

public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open,
R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();

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

}

@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
Fragment fragment = null;


if (id == home) {
fragment = new Home();
} else if (id == services) {
fragment = new Services();
} else if (id == beforeAfter) {
fragment = new BeforeAfter();
} else if (id == staff) {
fragment = new Staff();
} else if (id == patientInfo) {
fragment = new Patient();
} else if (id == blog) {
fragment = new Blog();
} else if (id == contactUs) {
fragment = new Contact();
}

if (fragment != null) {

android.support.v4.app.FragmentManager fragmentManager =
getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();

ft.replace(R.id.screen_area, fragment);
ft.commit();
}

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}

这是我的 Home.class fragment 代码

public class Home extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup
container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.home, null);

}

}

编辑我的 MainActivity java 文件并附加 onCreate

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.screen_area, new Home());
ft.commit();

现在可以了。我想我正在为 Home fragment 分配 XML 布局页面的名称,而不是 content_main 下的 FrameLayout 的 ID。

最佳答案

在 onCreate 中调用 fragment

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, new Fragment1());
ft.commit();

关于java - 如何在应用程序加载时实现默认 Activity ( fragment )。 (抽屉布局),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48615657/

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