为什么edittext上设置的值在转到android中的另一个片段后返回到同一片段时消失?

为什么edittext上设置的值在转到android中的另一个片段后返回到同一片段时消失?,android,android-fragments,Android,Android Fragments,我有一个片段addtaskfragment,其中我要求用户提供详细信息,如姓名、地点等。我在同一片段中有一个按钮,单击该按钮可转到另一个片段mycontacts获取该片段的字符串值,并将其传递给addtaskfragment。当mycontacts片段返回到addtaskfragment时,先前在EditText中输入的值将消失。当mycontacts中的值返回时,我希望这些值留在那里。我该怎么做?我的代码如下。请一步一步地引导我 addtaskfragment.class public cla

我有一个片段
addtaskfragment
,其中我要求用户提供详细信息,如姓名、地点等。我在同一片段中有一个按钮,单击该按钮可转到另一个片段
mycontacts
获取该片段的字符串值,并将其传递给
addtaskfragment
。当
mycontacts
片段返回到
addtaskfragment
时,先前在EditText中输入的值将消失。当
mycontacts
中的值返回时,我希望这些值留在那里。我该怎么做?我的代码如下。请一步一步地引导我

addtaskfragment.class

public class addtaskfragment extends Fragment {
    int mYear, mMonth, mDay;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.friendspage2, container, false);
        addcontacts.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Fragment fr;
                fr = new mycontacts();
                FragmentManager fm = getFragmentManager();
                android.app.FragmentTransaction ft = fm.beginTransaction();

                ft.replace(R.id.content_frame, fr);

                ft.commit();
            }
        });
    }
}
mycontacts扩展片段

purple.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v){
        Fragment fr;
        fr = new addtaskfragment();
        FragmentManager fm = getFragmentManager();
        android.app.FragmentTransaction ft = fm.beginTransaction();
        Bundle args = new Bundle();
        args.putString("CID", cid);
        Log.i("cid from long click", "" + cid);
        fr.setArguments(args);
        ft.replace(R.id.content_frame, fr);
        ft.commit();
    }
});

你的
EditText
搜索文本很清晰,这是因为你是replace
ft.replace(R.id.content\u frame,fr)片段,这意味着它首先被称为
ft.remove()然后调用
ft.add()
因此再次调用
onCreateView()
方法,并为
EditText
创建一个新的引用,这就是
EditText
搜索文本清晰的原因

解决方案是将搜索文本存储在
onPause()
上的SharedReferences中,并从
onResume()上的
SharedReferences
加载搜索文本值

执行如下操作:

private void savePreferences() {

    SharedPreferences settings = getActivity().getSharedPreferences("settings",
            Context.MODE_APPEND);
    SharedPreferences.Editor editor = settings.edit();

    KeywordValue = inputSearch.getText().toString();
    System.out.println("onPause save keyword: " + KeywordValue);
    editor.putString("searchText","");
    editor.commit();
}

在你的
片段中使用

@Override
public void onPause() {
    super.onPause();
    savePreferences();
}


我试过你的密码,但我想你的简历没有被调用。你能提出一些解决办法吗?
@Override
public void onPause() {
    super.onPause();
    savePreferences();
}
@Override
public void onResume() {
    super.onResume();
    loadPreferences();
}