Android片段后退按
我有几个片段。但是当按下按钮时,所有的片段都会导致PeriodFragment。我的问题是如何实现,以便当用户按下手机上的BACK按钮时,PeriodFragment将切换回它从中输入的片段。 这是从PeriodFragment.java Java代码:Android片段后退按
public class PeriodFragment extends Fragment {
Button btnPretrazi;
public PeriodFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_period, container, false);
//buttonPretraziPeriod
btnPretrazi = (Button) view.findViewById(R.id.buttonPretraziPeriod);
btnPretrazi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(),"test", Toast.LENGTH_SHORT).show();
}
});
return view;
}
}
这是我的TvrdjavaFragment.java(具有该按钮以切换到PeriodFragment.java的片段中的一个):
package com.example.ivanp.msnis;
public class TvrdjavaFragment extends Fragment {
Button btnIdinaperiod;
public TvrdjavaFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_tvrdjava, container, false);
// Inflate the layout for this fragment
//show date
TextView datumprikaz = (TextView) view.findViewById(R.id.datumprikaz);
Date danas = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
String novDatum = sdf.format(danas);
datumprikaz.setText(novDatum);
//End of show date
btnIdinaperiod = (Button) view.findViewById(R.id.buttonIdinaperiod);
btnIdinaperiod.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PeriodFragment periodFragment = new PeriodFragment();
FragmentTransaction periodFragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
periodFragmentTransaction.replace(R.id.frame, periodFragment);
periodFragmentTransaction.commit();
}
});
return view;
}
}
I”新的Android工作室,所以请告诉细节。
添加到堆栈中会解决这个问题:
periodFragmentTransaction.replace(R.id.frame, periodFragment);
periodFragmentTransaction.addToBackStack(null);
periodFragmentTransaction.commit();
According to android docs当你的应用程序中使用的片段,个别FragmentTransaction对象可表示应添加到后退堆栈环境的变化。例如,如果您通过交换碎片来实现手机上的主/明细流,则应确保在详细信息屏幕上按下“后退”按钮可将用户返回到主屏幕。为此,请在提交事务之前调用addToBackStack():
// Works with either the framework FragmentManager or the
// support package FragmentManager (getSupportFragmentManager).
getSupportFragmentManager().beginTransaction()
.add(detailFragment, "detail")
// Add this transaction to the back stack
.addToBackStack()
.commit();
我在哪里添加这个?在java文件中的位置? – Ivan
在你的活动中,无论你在哪里调用一个片段...... 然后在你的'onBackPressed()'中使用backstack弹出以前的片段事务 –
使用返回堆栈。谷歌的代码,你会直接找到它 –