Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何移动到已创建的片段?_Java_Android_Android Fragments_Android Activity - Fatal编程技术网

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?是的,我如何做?