gpt4 book ai didi

java - 旋转时 fragment 消失

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:05:54 25 4
gpt4 key购买 nike

我使用 java 添加了 fragment 。

当我以纵向模式打开应用程序时,它可以正常工作。

ScrrenShot

如果我旋转 fragment 就会消失。

enter image description here

但如果我关闭应用程序,然后旋转手机,然后再次打开应用程序,它就可以工作了。

enter image description here

我有两种不同的布局,一种用于纵向模式,另一种用于横向模式,两者同名,我在“layout”文件夹中有纵向布局,在“layout-land”文件夹中有横向布局。

我好像忘记了什么,老实说,我是 android 开发的新手。

Activity :

  @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

ListFragment frag = new ListFragment();

setContentView(R.layout.layout_main);

FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();

transaction.add(R.id.LIST_LAYOUT,frag,"LIST");
transaction.commit();

}

fragment :

public class ListFragment extends Fragment implements AdapterView.OnItemClickListener{


ListView List;
Communicator communicator;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//return super.onCreateView(inflater, container, savedInstanceState);

return inflater.inflate(R.layout.mlistfragment,container,false);


}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

communicator = (Communicator) getActivity();

List = (ListView) getActivity().findViewById(R.id.listView);

ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(),R.array.StrListButtons,android.R.layout.simple_list_item_1);
List.setAdapter(adapter);


List.setOnItemClickListener(this);


}

最佳答案

您实际上不需要在每次创建Activity 时都添加FragmentFragmentManager 自动维护它们。您应该将执行 FragmentTransaction 的代码包装在 if (savedInstanceState == null) 检查中,以便它仅在 Activity 已创建。例如:

if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.list_layout, new ListFragment(), "LIST")
.commit();
}

关于java - 旋转时 fragment 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21012245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com