【发布时间】:2015-05-19 21:16:09
【问题描述】:
我有一个显示属性列表的视图,在屏幕底部有一个按钮可以打开一个包含 MapView 的片段。
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.find_property_btn_map:
PropertyMapFragment fragment = PropertyMapFragment.newInstance(false, null);
getActivity().getSupportFragmentManager().beginTransaction()
.addToBackStack(null)
.replace(((ViewGroup) getView().getParent()).getId(), fragment, PropertyMapFragment.class.getSimpleName())
.commit();
break;
}
}
我的Properties片段的onCreateView方法如下
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mRootView = inflater.inflate(R.layout.fragment_properties_list, container, false);
getmBtnMap().setOnClickListener(this);
getmBtnSaveSearch().setOnClickListener(this);
getmBtnSort().setOnClickListener(this);
getmListView().setAdapter(getPropertyAdapter());
getmListView().setOnItemClickListener(this);
getmListView().setOnScrollListener(this);
getmListView().setScrollingCacheEnabled(false);
searchProperties();
return mRootView;
}
searchProperties(); 负责调用 Web 服务并填写 ArrayAdapter。
问题是,当我打开MapFragment 然后按返回按钮时,我的Property fragment 是空白的,并且按钮不响应onClick 事件。
我尝试调试并看到在返回Property fragment 时正在调用onCreateView(),但按钮不再起作用,并且看不到listview。
我做错了什么?
【问题讨论】:
-
在显示
PropertyMapFragment时使用((ViewGroup) getView().getParent()).getId()有什么特别的原因吗?如果没有,我建议将其替换为R.id.container:.replace(R.id.container, fragment, PropertyMapFragment.class.getSimpleName()) -
是的,我这样使用它是因为我在属性片段中调用它,而不是在包含的活动中
标签: android android-fragments onbackpressed fragment-backstack