[英]Problems with showing listView in fragment after orientation change
我試圖創建一個簡單的應用程序,該應用程序包含兩個片段,一個片段從左至右,其中包含一個項目列表,在左側選定元素的右側細節上。 它工作正常,但是當我更改設備的方向時,列表的某些位置會在背景上“凍結”。 誰能幫我?
我的活動的onCreate方法:
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i("on ", "createActivity");
FragmentTransaction fTrans=getFragmentManager().beginTransaction();
fTrans.add(R.id.frame1, fragmentList);
fTrans.add(R.id.frame2, detailFragment);
//detailFragment.setData("name 0", "src 0", BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher));
fTrans.commit();
DetailFragment:
public class DetailFragment extends Fragment {
private TextView tv1;
private TextView tv2;
private ImageView iw;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.detail_fragment , container, false);
tv1=(TextView)view.findViewById(R.id.detailText1);
tv2=(TextView)view.findViewById(R.id.detailText2);
iw=(ImageView)view.findViewById(R.id.detailImage);
return view;
}
public void setData(String text1, String text2, Bitmap bmp) {
tv1.setText(text1);
tv2.setText(text2);
iw.setImageBitmap(bmp);
}
ListFragment:
public class FragmentList extends Fragment {
ArrayList<HashMap<String, Object>> list=new ArrayList<HashMap<String, Object>>();
String[] from={"name", "imageSource", "image"};
int[] to={R.id.text1,R.id.text2,R.id.imageView};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
HashMap<String, Object> m=new HashMap<String, Object>();
for(int i=0; i<=19; i++) {
m=new HashMap<String, Object>();
m.put("name", "name "+i);
m.put("imageSource", "src "+i);
m.put("image", BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher));
list.add(m);
}
Log.i("on ", "createView");
View view=inflater.inflate(R.layout.fragment_list, null);
MyAdapter myAdapter=new MyAdapter(getActivity(), list, R.layout.row, from, to);
ListView listView=(ListView)view.findViewById(R.id.listView);
listView.setAdapter(myAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
DetailFragment df=(DetailFragment)getFragmentManager().findFragmentById(R.id.frame2);
df.setData((String)list.get(i).get("name"), (String)list.get(i).get("imageSource"), (Bitmap)list.get(i).get("image"));
}
});
return view;
}
}
你是這個意思嗎
嘗試更改交易的添加項來替換 :
FragmentTransaction fTrans=getFragmentManager().beginTransaction();
fTrans.replace(R.id.frame1, fragmentList);
當方向更改時,onCreate()會覆蓋列表視圖片段,而不會刪除前一個片段。
android:configChanges="keyboard|orientation"
嘗試在清單中將此標記在application標簽中:
<application
android:allowBackup="true"
android:configChanges="keyboard|orientation"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
我不會因為我的英語而精打細算。 這是因為如果您希望更改方向不會發生任何變化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.