2012-02-15 26 views
19

Đây là một Populating một listview trên một mảnh vỡ từ một cơ sở dữ liệu:Android - tại sao điều này cho tôi biết "Chế độ xem nội dung chưa được tạo"?

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

      LinearLayout Layout5 = (LinearLayout) inflater.inflate(R.layout.tab_frag5_layout, container, false); 

      Cursor allBands; 
      MyDatabase db; 

      Context ctx = (Context)TabFragment5.this.getActivity(); 


      db = new MyDatabase(ctx); 
      allBands = db.getBands(); 


      ListAdapter adapter = new SimpleCursorAdapter (ctx, 
        R.layout.listelement, 
        allBands, 
        new String[] {"BandName"}, 
        new int[] {R.id.text15}); 

      getListView().setAdapter(adapter); 

      return Layout5; 

     } 

Tại sao điều này đem lại cho tôi "xem nội dung chưa tạo" Trên logcat? các lực lượng chương trình đóng khi đoạn mở ...

+0

Không nên là câu lệnh đầu tiênContentView (..)? – kosa

+0

Tôi không nghĩ vậy, tôi đang làm việc với những mảnh vụn. – tyb

Trả lời

54

Tôi đã giải quyết nó bằng cách di chuyển bộ điều hợp và getListview thành onActivityCreated (...).

onCreateView chỉ thổi phồng và trả về bố cục.

+0

Khi bạn gọi setAdapter(), ListFragment kiểm tra để đảm bảo có một danh sách được xác định trong bố cục của bạn và vì onCreateView() không đưa ra phân đoạn của nó, đó là vấn đề về trứng và trứng. –

+0

Làm cả hai setAdapter() và getListView() đảm bảo kiểm tra? Tôi chắc chắn về getListView(), nhưng không phải về setAdapter() –

+3

tại sao không onViewCreated. nó có vẻ là tùy chọn trực quan nhất. – sudocoder

2

Một Fragment thường nên đặt bên trong một Activity trong khi onCreateView() sẽ góp phần cách bố trí của Fragment để chuyển container Activity.

Quoted from http://developer.android.com/guide/topics/fundamentals/fragments.html

Một mảnh thường được sử dụng như một phần của giao diện người dùng của một hoạt động và góp phần bố trí riêng của mình để hoạt động.

Vì vậy, sự cố có thể do thiếu số setContentView() trong vùng chứa Activity thay vì số Fragment của bạn.

+0

Vui lòng đọc phần folloup cho câu hỏi này: http://stackoverflow.com/questions/9297151/android-why-is-this-happening-content-not-yet-created-error – tyb

1

Tôi gặp vấn đề tương tự nhưng lỗi của tôi là gọi một đoạn (vô hình) từ tác vụ nền thông qua giao diện. do đó, các mảnh vô hình đã cố gắng sử dụng quan điểm của nó mà không có sẵn ... tôi đã sửa nó với cùng một giải pháp: chức năng giao diện sẽ kiểm tra nếu fragment isVisible(). Cảm ơn bạn đã cho tôi thấy đúng hướng ...

public void updateListInterface(){ 
    if(this.isVisible()) { 
     this.initListAdapter(); 
     getLoaderManager().restartLoader(0, null, this); 
    } else { 
     Log.v(TAG, "view is not visible"); 
    } 
} 
Các vấn đề liên quan