2014-10-26 48 views
6

Tôi đang sử dụng NavigationDrawer được tạo bởi mẫu (khi bắt đầu một dự án mới). Tôi đang cố gắng để có được khả năng tương thích Material Design vì vậy tôi đang sử dụng AppCompat v7. Tôi đi theo these instructions để thiết lập một Toolbar như ActionBar tôi (tức là sử dụng setSupportActionBar trên thanh công cụ của tôi) và tôi nhận được một NPE trong NavigationDrawerFragment tôi tại (bên onCreateView)NavigationDrawerFragment không hoạt động với Thanh công cụ AppCompat

mDrawerListView.setAdapter(new ArrayAdapter<String>(
      getActionBar().getThemedContext(), 
      android.R.layout.simple_list_item_activated_1, 
      android.R.id.text1, ... 

bây giờ tôi nghi ngờ vấn đề là với getActionBar() phương pháp bên trong đoạn:

private ActionBar getActionBar() { 
    return ((ActionBarActivity) getActivity()).getSupportActionBar(); 
} 

nhưng tôi không có ý tưởng tại sao - tôi gọi setSupportActionBar (thanh công cụ) trong onCreate Hoạt động trước khi kêu gọi thiết lập() trên NavigationDrawerFragment ...

tôi f bất cứ ai có một đầu mối tại sao điều này xảy ra xin vui lòng giúp đỡ!

Trả lời

6

Nó có vẻ như vấn đề là onCreateView đoạn đã được gọi trước khi onCreate hoạt động và do đó không có bộ ActionBar. Tôi vừa chuyển đoạn mã có vấn đề thành onActivityCreated của fragment và nó hoạt động như một sự quyến rũ.

+0

bạn có thể vui lòng xây dựng? – bernlim

+0

@bernlim Chắc chắn. Vấn đề là khi hoạt động của tôi đã được tạo ra, phương thức onCreateView của đoạn được gọi trước onCreate của hoạt động. NPE phát sinh trong onCreateView của fragment bởi vì tôi cố gắng để có được thanh hành động là null tại thời điểm đó vì onCreate của hoạt động chưa được gọi và ActionBar chưa được khởi tạo/set/created. Điều đó có hợp lý không? – Djordje

4

chỉ cần thay thế getActionBar().getThemedContext() với getActivity()

+1

nhưng getActivity() không tương đương với getActionBar(). GetThemedContext() mặc dù nó có thể cung cấp ngữ cảnh. – 7383

Các vấn đề liên quan