Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重新创建活动时,可扩展列表视图侦听器不工作_Java_Android_Expandablelistview - Fatal编程技术网

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

Java 重新创建活动时,可扩展列表视图侦听器不工作,java,android,expandablelistview,Java,Android,Expandablelistview,我在一个片段中有一个可扩展的列表视图,并在列表的onGroupExpand函数中将列表设置为一次只扩展一行。 活动运行时,一切正常。一旦从保存的实例状态恢复活动,就永远不会调用函数onGroupExpand。我试图重置列表的侦听器,但仍然不起作用 下面是控制组扩展功能的代码 private void setListExpandListener() { final ExpandableListView list = (ExpandableListVi

我在一个片段中有一个可扩展的列表视图,并在列表的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();
}

如果有任何帮助,我们将不胜感激。

监听器设置在哪里?如果您在桌面或其他任何地方拔下监听器的插头,您确定重新启动后会再次设置监听器吗?如果没有看到完整的源代码,像您这样的问题是无法回答的

摘自developer.google: 已创建视图上的公共void(视图,捆绑保存状态) 在API级别13中添加

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

参数

视图:onCreateView(LayoutFlater、ViewGroup、Bundle)返回的视图


savedInstanceState:如果为非null,则此片段将根据此处给定的先前保存状态重新构造

那么在哪里调用onGroupExpand方法呢?我已经添加了所需的代码,希望它能帮助您回答我的问题。片段的生命周期中没有onViewCreated()方法。可能尝试重写onResume()或onViewStateReturned()等给定方法。我在片段中编写此代码,而片段确实具有可以重写的onViewCreated方法。我正在onActivityCreated中还原状态,该状态可用于根据片段文档还原片段中的状态。