我有3个片段A,B(带搜索)和C.我想要做的是返回到从C按下的Back Key上的Fragment B,但不是它之前保留的状态/在搜索中没有任何内容酒吧精诚。
这是我做的:
public class FragCount extends Fragment{
//ExpandableListAdapter listAdapter;
//
SearchableAdapter listAdapter;
ExpandableListView expListView;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild;
private int groupID = -1;
public static EditText searchtext;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle args) {
View view = inflater.inflate(R.layout.country_main, container, false);
setRetainInstance(true);
// get the listview
expListView = (ExpandableListView) view.findViewById(R.id.lvExp);
// preparing list data
prepareListData();
listAdapter = new SearchableAdapter(getActivity(), listDataHeader, listDataChild);
// setting list adapter
expListView.setAdapter(listAdapter);
expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
final String selected = (String) listAdapter.getChild(
groupPosition, childPosition);
Values.Language = selected;
getActivity().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
expListView.collapseGroup(-1);
Bundle args = new Bundle();
args.putString("Menu", selected);
args.putInt("Serial",childPosition);
Fragment c = new InfoShow();
c.setArguments(args);
expListView.collapseGroup(groupID);
调用片段C
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame,c).addToBackStack(null).commit();
return true;
}
});
searchtext = (EditText) view.findViewById(R.id.inputSearch);
searchtext.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void afterTextChanged(Editable editable) {
FragCount.this.listAdapter.getFilter().filter(editable.toString());
listAdapter.notifyDataSetChanged();
expListView.invalidateViews();
expListView.collapseGroup(groupID);
}
});
((ActionBarActivity) getActivity()).getSupportActionBar().setTitle("Select Country");
expListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
int previousGroup = -1;
@Override
public void onGroupExpand(int groupPosition) {
if(groupPosition != previousGroup)
expListView.collapseGroup(previousGroup);
previousGroup = groupPosition;
groupID = previousGroup;
}
});
return view;
}
答案 0 :(得分:0)
此问题的解决方法是在提交新片段之前清除所有必填字段。