Java 如何移动到已创建的片段?
我创建了一个活动,我想将一个片段附加到此活动。 这是我的活动:Java 如何移动到已创建的片段?,java,android,android-fragments,android-activity,Java,Android,Android Fragments,Android Activity,我创建了一个活动,我想将一个片段附加到此活动。 这是我的活动: public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { FragmentManager fragmentManager= getSupportFragmentManager(); @Override protected void onCreate(Bund
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
FragmentManager fragmentManager= getSupportFragmentManager();
@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.setDrawerListener(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();
if (id == R.id.nav_home){
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
1.从这里开始,我希望“onNavigationItemSelected”方法上的项目“nav_home”将带我到我将创建的片段
2.我也希望这个片段出现在我的主要活动中
如何满足这两个要求?
请帮我把碎片弄成碎片。
谢谢大家! 好的首先添加这个函数
public void displayView(int viewId) {
Fragment fragment = null;
String title = getString(R.string.app_name);
switch (viewId) {
case R.id.nav_go:
fragment = new GoFragment();
title = "Go Now";
viewIsAtHome = true;
break;
case R.id.nav_trips:
fragment = new TripsFragment();
title = "MY Trips";
viewIsAtHome = false;
break;
}
if (fragment != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_main, fragment);
ft.commit();
}
// set the toolbar title
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle(title);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
}
及
编辑此
@Override
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
displayView(id);
return true;
}
只需在onCreate中添加这个
displayView(R.id.nav_home);
创建新fragmet的步骤
@SuppressLint("ValidFragment")
public static class OnlineFragment extends Fragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View rootview = inflater.inflate(R.layout.fragment_online, container, false);
Button b1 = (Button) rootview.findbyid(R.id.s)
return rootview;
}
}
是的,但是onNavigationItemSelected是一个抽屉,几乎没有选项,每个选项都需要将我带到不同的片段。请解释一下,nav_home只是Menu.xml上的一个项目,我希望该项目将我指向一个片段。这个片段我希望它成为应用程序的“主屏幕”。另一件事是“onNavigationItemSelected”方法是点击菜单上的一个项目并将用户重定向到另一个片段/活动的方法。您所做的是,当我在列表上有更多项时,该方法将带我到这个确切的片段OK使用代码,如果您在Home中单击,您选择的片段类将显示您是否询问如何创建fragment to Home?是的,我如何做?