如何移动到创建的片段?

时间:2017-03-21 16:44:20

标签: java android android-fragments android-activity

我创建了一个活动,我想在此活动中附加一个片段。 有我的活动:

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.从这里开始我想要的是" nav_home" on" onNavigationItemSelected"方法将把我带到一个我将创建的片段。

2.我也希望这个片段出现在我的主要活动中。

我如何做这两项要求? 请将片段制作成片段来帮助我。 谢谢!

1 个答案:

答案 0 :(得分:0)

OK
首先添加此功能

  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;
        }
    }