Tôi có một số ViewPager
với hai Fragments
mà tôi khởi tạo trong onCreate
trong số FragmentActivity
của mình.Android - Viewpager và fragments, các phương thức không hoạt động
private List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this,Frag_1.class.getName()));
fragments.add(Fragment.instantiate(this,Frag_2.class.getName()));
this.vPagerAdapter = new Adapt(super.getSupportFragmentManager(),fragments);
vPager = (ViewPager) super.findViewById(R.id.pager);
vPager.setAdapter(vPagerAdapter);
My thứ hai Fragment
có một phương thức bên trong mà tôi gọi để cập nhật của tôi ListView
-refreshList()
:
public class Frag_2 extends Fragment {
private ListView list;
private ArrayList<data> data;
private boolean firstCreation=true;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setRetainInstance(false);
}
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout, container, false);
list = (ListView) view.findViewById(R.id.lst);
//this.setRetainInstance(true);
return view;
}
public void refreshList(ArrayList <data> data){
if(data!=null){
ArrayAdapter<data> adapter = new Item_data_adapter(getActivity(),data);
list.setAdapter(adapter);}
}
}
gọi từ tôi FragmentActivity
//Something
Frag_2 fr = (Frag_2) vPagerAdapter.getItem(1);
if (fr.getView() != null) {
fr.refreshList(data);
}
Nó hoạt động tốt cho đến khi tôi thay đổi hướng của màn hình. Nếu tôi sai, nhưng tôi đã tìm kiếm hàng giờ và tôi không tìm được giải pháp hay giải thích tốt, thì FragmentActivity
chỉ được tạo một lần và Fragments
được gắn vào nó nhưng việc tái tạo Fragments
về thay đổi cấu hình. Bây giờ, khi định hướng thay đổi, tôi không nhận được View
từ onCreate
vì vậy khi tôi cố gắng lấy số View
từ số Fragment
nó trả về giá trị rỗng và phương thức refreshList()
của tôi không được gọi. Làm thế nào tôi có thể sửa lỗi này?
Không ai biết làm thế nào để làm điều đó? – DLock
Tôi đang gặp sự cố tương tự và không tìm thấy giải pháp. Tôi bắt đầu nghĩ rằng có một lỗi trong 'FragmentManager' hoặc một cái gì đó khác xem xét cả hai chúng tôi đang trải qua điều này. – adneal
bố cục xml của bạn là gì? đây không phải là vấn đề đối với các đoạn tĩnh được khai báo trong bố cục của hoạt động nhưng đây không phải là trường hợp cho các đoạn động – chip