Android 如何从一个片段回到另一个片段?

Android 如何从一个片段回到另一个片段?,android,android-fragments,Android,Android Fragments,当我点击后退按钮时,我如何转到上一个片段 RecyclerAdapter_1_ten.java public class RecyclerAdapter_1_ten extends RecyclerView.Adapter<RecyclerAdapter_1_ten.ViewHolder> { private String[] SubTxt = {"NCERT Solution", "Notes"}; private int[] SubImage = {R.dra

当我点击后退按钮时,我如何转到上一个片段

RecyclerAdapter_1_ten.java

public class RecyclerAdapter_1_ten extends RecyclerView.Adapter<RecyclerAdapter_1_ten.ViewHolder> {

private String[] SubTxt = {"NCERT Solution",
        "Notes"};

private int[] SubImage = {R.drawable.ic_answers_black_48dp,
        R.drawable.ic_notes_black_48dp};

Activity activity;
public RecyclerAdapter_1_ten(Activity activity) {
    this.activity = activity;
}

class ViewHolder extends RecyclerView.ViewHolder {

    public int currentItem;
    public ImageView itemImage;
    public TextView itemTitle;


    public ViewHolder(View itemView) {
        super(itemView);
        itemImage = (ImageView) itemView.findViewById(R.id.SubImage);
        itemTitle = (TextView) itemView.findViewById(R.id.SubTxt);


        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = getAdapterPosition();

                switch (position) {
                    case 0:
                        android.app.FragmentManager fm = activity.getFragmentManager();
                        fm.beginTransaction().replace(R.id.content_frame, new SecondClass_10()).commit();
                    case 1:
                        Snackbar.make(v, "Comming Soon " + position,
                                Snackbar.LENGTH_LONG)
                                .setAction("Action", null).show();

                }

            }
        });
    }
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View v = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.recycler_1_9, viewGroup, false);
    ViewHolder viewHolder = new ViewHolder(v);
    return viewHolder;
}

@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
    viewHolder.itemTitle.setText(SubTxt[i]);
    viewHolder.itemImage.setImageResource(SubImage[i]);
}

@Override
public int getItemCount() {
    return SubTxt.length;
}
}
MainActivity.java

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

    android.app.FragmentManager fm = getFragmentManager();
    fm.beginTransaction().replace(R.id.content_frame, new FirstClass_9()).commit();
}

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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    android.app.FragmentManager fn = getFragmentManager();
    int id = item.getItemId();

    if (id == R.id.nav_9) {
        fn.beginTransaction().replace(R.id.content_frame, new FirstClass_9()).commit();

    } else if (id == R.id.nav_10) {
        fn.beginTransaction().replace(R.id.content_frame, new FirstClass_10()).commit();

    } else if (id == R.id.nav_11) {
        fn.beginTransaction().replace(R.id.content_frame, new FirstClass_11()).commit();

    } else if (id == R.id.nav_12) {
        fn.beginTransaction().replace(R.id.content_frame, new FirstClass_12()).commit();

    } else if (id == R.id.nav_aboutUs) {


    } else if (id == R.id.nav_feedback) {


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



}
我遵循了很多教程,但我没有得到答案,希望我能在这里得到答案。我已经添加了recyclerview,当我点击它打开片段,但当我点击后退按钮,而不是返回到第一页


当我单击“上一步”按钮时,如何从片段返回到片段?

您可以使用堆栈来保存片段实例。当您移动到下一个片段时,将该片段推入堆栈并将其与活动分离,然后在onbackpressed事件中弹出该片段并将其附加到活动。

这是我开始时遇到的最好的解释之一,因此对于片段导航,我希望它有助于您了解它们的工作方式


可能重复的反压方法无效。如果是,请查看第一个答案。您的意思是什么?你试了什么?编译并运行代码时发生了什么?我的应用程序运行良好,但当我按下“上一步”按钮时,它会转到我想要的第一个片段,应该转到上一个片段堆栈位于java.util包中,您可以简单地阅读api文档。;)
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);

    android.app.FragmentManager fm = getFragmentManager();
    fm.beginTransaction().replace(R.id.content_frame, new FirstClass_9()).commit();
}

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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    android.app.FragmentManager fn = getFragmentManager();
    int id = item.getItemId();

    if (id == R.id.nav_9) {
        fn.beginTransaction().replace(R.id.content_frame, new FirstClass_9()).commit();

    } else if (id == R.id.nav_10) {
        fn.beginTransaction().replace(R.id.content_frame, new FirstClass_10()).commit();

    } else if (id == R.id.nav_11) {
        fn.beginTransaction().replace(R.id.content_frame, new FirstClass_11()).commit();

    } else if (id == R.id.nav_12) {
        fn.beginTransaction().replace(R.id.content_frame, new FirstClass_12()).commit();

    } else if (id == R.id.nav_aboutUs) {


    } else if (id == R.id.nav_feedback) {


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



}