重新创建活动时,可扩展列表视图侦听器不起作用

时间:2013-08-12 10:37:12

标签: java android expandablelistview

我在片段中有一个可扩展的列表视图,并且已将列表设置为在列表的onGroupExpand函数中一次只展开一行。  活动正在运行时,一切正常。一旦从保存的实例状态恢复活动,就永远不会调用onGroupExpand函数。我试图重置列表的监听器,但仍无法正常工作。

以下是控制群组扩展功能的代码。

    private void setListExpandListener()
        {
            final ExpandableListView list = (ExpandableListView)getActivity().findViewById(android.R.id.list);
            list.setEmptyView(getView().findViewById(R.id.no_mixes_empty_list_view));
            list.setOnGroupExpandListener(new OnGroupExpandListener() 
            {   
                @Override
                public void onGroupExpand(int groupPosition) 
                { 
                    collapseGroupAtPosition(list, groupPosition);
                }
            });
        }



 private void collapseGroupAtPosition(ExpandableListView list,int position)
        {
            if (parentRowPosition != -1 && parentRowPosition != position) 
            {
                list.collapseGroup(parentRowPosition);  
            }
            parentRowPosition = position;
        }

我正在尝试保存变量parentRowPosition的状态并在片段的恢复状态下检索。

检索工作正常但是监听器现在不起作用,并且列表的所有行都可以一次扩展。

以下是设置侦听器的代码: -

    public void onViewCreated(View view, Bundle savedInstanceState)
        {
            mAdapter = new SavedTankExpandableListAdapter(getActivity());
            mAdapter.setDeleteListener(this);
            setListExpandListener();
            setListenersForViews();
            setOverlayAccordingToAppLaunchCount();
            super.onViewCreated(view, savedInstanceState);

        }

     public void onActivityCreated(Bundle savedInstanceState) 
            {
                super.onActivityCreated(savedInstanceState);
                onRestoreState(savedInstanceState);
            }

    public void onRestoreState(Bundle savedInstanceState)
{
    if(savedInstanceState==null)
        return;
    parentRowPosition=savedInstanceState.getInt("parentRowPosition",0);

    Utility.LHTLogs("Parent Row Position "+ parentRowPosition, true);
    if(mAdapter==null)
        mAdapter = new SavedTankExpandableListAdapter(getActivity());
    setListExpandListener();
}

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

侦听器设置在哪里,如果您在OnStop或其他任何地方拔下侦听器,您确定在重新启动后再次设置它吗?如果没有看到完整的源代码,像你这样的问题就无法回答。

答案 1 :(得分:0)

摘自developer.google:

public void onViewCreated(View view,Bundle savedInstanceState) 在API级别13中添加

在onCreateView(LayoutInflater,ViewGroup,Bundle)返回后立即调用,但在恢复任何已保存状态之前返回到视图中。这使得子类有机会在知道自己的视图层次结构已完全创建后进行初始化。但是,片段的视图层次结构此时不会附加到其父级。

参数

view:onCreateView返回的视图(LayoutInflater,ViewGroup,Bundle)。

savedInstanceState:如果为非null,则从此处给出的先前保存状态重新构造此片段。