簡體   English   中英

方向更改后在片段中顯示listView的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM