5

Tôi đang sử dụng thư viện hỗ trợ v4 và không lưu trạng thái của phân đoạn.FragmentManager.getFragment() NullPointerException

@Override 
protected void onSaveInstanceState(Bundle outState) 
{ 
    ... 
    if(mFragment != null) 
     getSupportFragmentManager().putFragment(outState, "frag", mFragment); 
    ... 
} 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    ... 
    if(savedInstanceState != null) 
    { 
     //Here I get NullPointerException 
     getSupportFragmentManager().getFragment(savedInstanceState, "frag"); 
    } 
    ... 
} 

Khi tôi gọi getFragment() NullPointerException được ném (savedInstanceState chứa entry với "frag").

Dưới đây là một phần của đầu ra logcat:

04-18 00:10:56.719: E/AndroidRuntime(14644): Caused by: java.lang.NullPointerException 
04-18 00:10:56.719: E/AndroidRuntime(14644): at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:569) 

Ngoài ra tôi đã cố gắng gọi getFragments() trả về null. Điều đó có vẻ lạ với tôi.

Tôi sẽ đánh giá cao bất kỳ trợ giúp nào!


Giải pháp:

tôi quên sử dụng super.onSaveInstanceState(outState); bên onCreate phương pháp.

+1

Bạn có gọi onSaveInstanceChế độ bên trong hoạt động gốc của bạn không? ([xem] (http://stackoverflow.com/a/8752360/2668136)) – Fllo

+0

Vâng, rất ngu ngốc của tôi, quên gọi 'super.onSaveInstanceState (outState) '.Cảm ơn bạn rất nhiều! – Tzoiker

+0

Bạn được chào đón. Vui vì nó hoạt động ngay bây giờ. – Fllo

Trả lời

4

Nhờ @Fllo. Vấn đề là tôi quên gọi onSaveInstanceState() hoạt động của phụ huynh.

@Override 
protected void onSaveInstanceState(Bundle outState) 
{ 
    //Added this and the problem was solved 
    super.onSaveInstanceState(outState); 
    ... 
} 
+1

Bạn có nghĩa là 'void onSaveInstanceState' phải không? –

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