返回无状态片段

时间:2015-04-25 23:46:20

标签: android android-fragments

我有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;
}

1 个答案:

答案 0 :(得分:0)

此问题的解决方法是在提交新片段之前清除所有必填字段。