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