为什么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
搜索文本很清晰,这是因为你是replaceft.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();
}