我在片段中有一个保存菜单选项,用于保存用户数据,我也想在片段中反压缩时保存数据?如何实现?
这是我的saveMethod:
public void saveNote() {
title = edit_title.getText().toString().trim();
text = txtnote2.getText().toString().trim();
if (title.isEmpty()) {
Toast.makeText(getActivity(), "Please enter a title", Toast.LENGTH_SHORT).show();
}
else if (!text.isEmpty() || !title.isEmpty()) {
long date = new Date().getTime(); // get current time;
if (temp == null) {
temp = new Note(title, text, date,activityName);
dao.insertNote(temp); //inserts note record to db;
} else {
temp.setNoteTitle(title);
temp.setNoteText(text);
temp.setNoteDate(date);
temp.setActivityName(activityName);
dao.updateNote(temp);
}
Toast.makeText(getActivity(), "Saved!!", Toast.LENGTH_SHORT).show();
// finish(); //return to main activity
getActivity().startActivity(new Intent(getActivity(),MainActivity.class));
getActivity().finish();
}
}
我想在片段中回压此方法 该怎么办?
答案 0 :(得分:1)
要告诉片段何时按下后退按钮,首先需要一个基础片段,所有其他片段都将从中继承。该基本片段实现了以下内容:
public interface OnBackPressed {
void onBackPressed();
}
public class BaseFragment extends Fragment implements OnBackPressed {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onBackPressed() {
// do what you want to save
saveNote()}
}
现在在您的托管活动中,在弹出任何片段之前调用接口的所有实现:
@Override
public void onBackPressed() {
saveData()
super.onBackPressed();
}
private void saveData(){
List<Fragment> fragments = getSupportFragmentManager().getFragments();
for(Fragment f : fragments){
if(f != null && f instanceof BaseFragment)
((BaseFragment)f).onBackPressed();
}
}
答案 1 :(得分:0)
您尝试过吗:
public class BaseFragment extends Fragment {
/**
* Could handle back press.
* @return true if back press was handled
*/
public boolean onBackPressed() {
return false;
}
}