返回上一个片段

时间:2016-01-10 19:14:01

标签: android android-fragments

当我启动我的应用程序时,我的第一个片段已启动。在那个片段中,我单击一个按钮,用新的片段替换原始的片段。当我点击这个第二片段时,它不会返回到第一片段,而是关闭应用程序并返回到手机的主屏幕。有人知道为什么吗?

以下是我的活动中创建的原始片段onCreate方法:

public class Main extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

        LoginFragment firstFragment = new LoginFragment();

        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.replace(R.id.content_frame, firstFragment);
        ft.addToBackStack(null);
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        ft.commit();

    }
}}

以下是此Fragment的代码,其中包含显示第二个片段的按钮:

public class LoginFragment extends Fragment implements View.OnClickListener {
private FragmentTransaction ft;
private Button registerButton;

public LoginFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_login, container, false);

    registerButton = (Button)view.findViewById(R.id.register_button);
    registerButton.setOnClickListener(this);

    return view;
}

@Override
public void onClick(View v) {
    switch (v.getId()){
        case R.id.register_button:{
            RegisterFragment registerFragment = new RegisterFragment();
            ft = getFragmentManager().beginTransaction();
            ft.replace(R.id.content_frame, registerFragment);
            ft.addToBackStack(null);
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
            ft.commit();
            break;
        }
    }
}}

启动的第二个片段现在不包含任何内容。无论如何,当我在第二片时我按下我的手机时,它不会返回我的第一片。

1 个答案:

答案 0 :(得分:1)

您似乎忘了在容器活动中实现onBackPressed方法:

@Override
public void onBackPressed() {
    if (getFragmentManager().getBackStackEntryCount() > 0 ){
        getFragmentManager().popBackStack();
    } else {
        super.onBackPressed();
    }
}
相关问题