1
當我開始我的應用程序時,我的第一個片段被啓動。在那個片段中,我點擊一個按鈕,用一個新的片段代替原來的片段。當我點擊第二個片段時,它不會回到第一個片段,而是關閉應用程序並返回到手機的主屏幕。有人知道爲什麼嗎?回到以前的片段
這是在我的活動的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();
}
}}
以下是此片段的代碼,其中包含帶來了第二個片段按鈕:
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;
}
}
}}
發佈的第二個片段現在不包含任何內容。無論如何,當我在第二片片段時,當我按下手機時,它不會回到我的第一個片段。
據我所看到的,你忘了'實現集裝箱活動onBackPressed'方法。詳情請看這裏:http://stackoverflow.com/questions/26693754/fragment-addtobackstack-and-popbackstackimmediate-not-working – thetonrifles
就是這樣!如果您想重新輸入,請接受您的答案。謝謝! –