当屏幕旋转片段变动 [英] Fragment Changes when Screen is rotated
问题描述
我有两个片段,FragmentCity和Fragmentnumber1。当屏幕方向上fragmentnumber1变化,它可以追溯到FragmentCity。有谁知道如何解决此问题?我AP preciate它,如果你能告诉我怎么解决这个问题。
FragmentCity
公共类FragmentCity扩展片段{ 最终的String []项目=新的String [] {FC1,FC2,FC3,FC4,FC5
}; @覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){ 查看查看= inflater.inflate(R.layout.haz,集装箱,FALSE); ListView控件列表=(ListView控件)view.findViewById(R.id.fir);
ArrayAdapter<串GT;适配器=新ArrayAdapter<串GT;(getActivity(),android.R.layout.simple_list_item_1,项目);
list.setAdapter(适配器); list.setOnItemClickListener(新AdapterView.OnItemClickListener(){ @覆盖
公共无效onItemClick(适配器视图<>为arg0,ARG1观,诠释ARG2,
长ARG3){ 片段myFragment = NULL; 开关(ARG2){ 情况下0:
myFragment =新Fragmentnumber1();
打破;
情况1:
myFragment =新Fragmentnumber2();
打破;
案例2: myFragment =新Fragmentnumber3();
打破;
案例3:
myFragment =新Fragmentnumber4();
打破;
情况4:
myFragment =新Fragmentnumber5(); 打破; }
//更新替换片段的主要内容 FragmentManager fragmentManager = getActivity()getSupportFragmentManager()。
fragmentManager.popBackStackImmediate(NULL,FragmentManager.POP_BACK_STACK_INCLUSIVE);
fragmentManager.beginTransaction()。addToBackStack(断枝)
.replace(R.id.container2,myFragment)
。承诺();
} });
返回视图。
}}
Fragmentnumber1
公共类Fragmentnumber1扩展片段{ 最终的String []项目=新的String [] {NUM1,NUM2,NUM3
}; @覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){ 查看查看= inflater.inflate(R.layout.haz,集装箱,FALSE); ListView控件列表=(ListView控件)view.findViewById(R.id.fir);
ArrayAdapter<串GT;适配器=新ArrayAdapter<串GT;(getActivity(),android.R.layout.simple_list_item_1,项目);
list.setAdapter(适配器); list.setOnItemClickListener(新AdapterView.OnItemClickListener(){ @覆盖
公共无效onItemClick(适配器视图<>为arg0,ARG1观,诠释ARG2,
长ARG3){ 片段myFragment = NULL;
开关(ARG2){
情况下0:
myFragment =新NUM1();
打破;
情况1:
myFragment =新NUM2();
打破;
案例2:
myFragment =新NUM3();
打破; }
//更新替换片段的主要内容
FragmentManager fragmentManager = getChildFragmentManager();
fragmentManager.beginTransaction()。addToBackStack(空)
.replace(R.id.container2,myFragment)
。承诺();
} });
返回视图。
}
}
尝试添加下面一行到你的含活性(大概 MainActivity
)的清单
<活动机器人:名字=。MainActivity
机器人:configChanges =keyboardHidden |方向|屏幕尺寸/>
这将使该活动横跨方向改变维护它的状态。
I have two fragments, FragmentCity and Fragmentnumber1. When screen orientation changes on fragmentnumber1, it goes back to FragmentCity. Does anyone know how to solve this? I appreciate it if you could show me how to solve this issue
FragmentCity
public class FragmentCity extends Fragment {
final String[] items = new String[]{"FC1", "FC2", "FC3", "FC4","FC5"
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.haz, container, false);
ListView list = (ListView) view.findViewById(R.id.fir);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Fragment myFragment = null;
switch (arg2) {
case 0:
myFragment = new Fragmentnumber1();
break;
case 1:
myFragment = new Fragmentnumber2();
break;
case 2:
myFragment = new Fragmentnumber3();
break;
case 3:
myFragment = new Fragmentnumber4();
break;
case 4:
myFragment = new Fragmentnumber5();
break;
}
// update the main content by replacing fragments
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
fragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
fragmentManager.beginTransaction().addToBackStack("frag")
.replace(R.id.container2, myFragment)
.commit();
}
});
return view;
}
}
Fragmentnumber1
public class Fragmentnumber1 extends Fragment {
final String[] items = new String[]{"num1", "num2", "num3"
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.haz, container, false);
ListView list = (ListView) view.findViewById(R.id.fir);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Fragment myFragment = null;
switch (arg2){
case 0:
myFragment = new num1();
break;
case 1:
myFragment = new num2();
break;
case 2:
myFragment = new num3();
break;
}
// update the main content by replacing fragments
FragmentManager fragmentManager = getChildFragmentManager();
fragmentManager.beginTransaction().addToBackStack(null)
.replace(R.id.container2, myFragment)
.commit();
}
});
return view;
}
}
Try adding the following line to your containing activity (probably MainActivity
) in the manifest
<activity android:name=".MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize"/>
This will allow the Activity to maintain it's state across orientation changes.
这篇关于当屏幕旋转片段变动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!