我在片段中有一个保存菜单选项,用于保存用户数据,我也想在片段中反压缩时保存数据?如何实现?

这是我的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();
        }
    }


我想在片段中回压此方法
如何才能做到这一点 ?

最佳答案

要告诉片段何时按下后退按钮,首先需要一个基本片段,所有其他片段都将从中继承。该基本片段实现了以下内容:

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

10-06 05:16
查看更多