2012-02-15 60 views
5

Tôi đang xây dựng một ứng dụng bằng cách sử dụng Máy nhắn tin có thư viện tương thích. Lực lượng ứng dụng của tôiĐóng bất cứ khi nào tôi cố gắng tạm dừng nó (ví dụ: khi tôi quay trở lại màn hình nền của mình).Vấn đề về Máy nhắn tin Android khi Tạm dừng

Tôi chưa bao giờ gặp phải lỗi nào thuộc loại đó và do đó, tôi không biết cách giải quyết nó.

tôi sẽ chỉ cho bạn mã của tôi trong khi tôi khá chắc chắn bạn sẽ không cần phải nhìn vào nó:

public class *** extends FragmentActivity { 
    /** Called when the activity is first created. */ 

    static final int NUM_ITEMS = 5; 
    static final int NUM_ACTUALITE = 0; 
    static final int NUM_SELECTION = 1; 
    static final int NUM_MULTIMEDIA = 2; 
    static final int NUM_FESTIVALIER = 3; 
    static final int NUM_***E = 4; 

    MyAdapter mAdapter; 

    ViewPager mPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.pager_layout); 

     mAdapter = new MyAdapter(getSupportFragmentManager()); 

     mPager = (ViewPager) findViewById(R.id.pager); 
     mPager.setAdapter(mAdapter); 


    } 

    public static class MyAdapter extends FragmentPagerAdapter { 
     public MyAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public int getCount() { 
      return NUM_ITEMS; 
     } 

     @Override 
     public Fragment getItem(int position) { 

      switch (position) { 
      case NUM_ACTUALITE: 
       return ActuFragment.newInstance(); 
      case NUM_SELECTION: 
       return SelectionFragment.newInstance(); 
      case NUM_MULTIMEDIA: 
       return MultimediaFragment.newInstance(); 
      case NUM_FESTIVALIER: 
       return FestivalierFragment.newInstance(); 
      case NUM_***E: 
       return ***eFragment.newInstance(); 
      default: 
       return ActuFragment.newInstance(); 
      } 

     } 
    } 

và logcat của tôi:

02-15 11:48:03.902: E/AndroidRuntime(11601): FATAL EXCEPTION: main 
02-15 11:48:03.902: E/AndroidRuntime(11601): java.lang.RuntimeException: Unable to pause activity {com.**.**/com.**.**.***Activity}: java.lang.NullPointerException 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2354) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2311) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2291) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.access$1700(ActivityThread.java:117) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:938) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.os.Looper.loop(Looper.java:130) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.main(ActivityThread.java:3683) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at java.lang.reflect.Method.invokeNative(Native Method) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at java.lang.reflect.Method.invoke(Method.java:507) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at dalvik.system.NativeStart.main(Native Method) 
02-15 11:48:03.902: E/AndroidRuntime(11601): Caused by: java.lang.NullPointerException 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1576) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1617) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:481) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.Activity.performSaveInstanceState(Activity.java:1037) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1181) 
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2336) 
02-15 11:48:03.902: E/AndroidRuntime(11601): ... 12 more 

Một mảnh của mỏ:

public class ActuFragment extends Fragment { 

    public static ActuFragment newInstance() { 
     ActuFragment f = new ActuFragment(); 

     return f; 
    } 

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

     View mainView = inflater.inflate(R.layout.actualites_layout, 
       container, false); 
     return mainView; 

    } 
} 
+1

phải có điều gì đó sai trái với cách bạn đang sử dụng phân đoạn. bạn đã thử làm việc đó chưa có phân đoạn chưa? – josephus

+0

có, và nó có vẻ hoạt động tốt. bạn có muốn không nhìn thấy những người khác một phần của mã của tôi không? –

+0

Tôi đã bỏ lỡ đọc câu trả lời của bạn, không có tôi đã không thử nó mà không có mảnh vỡ, thực tế tôi đã chắc chắn nó không thể. nhưng tôi vẫn cần chúng. Tôi đã thêm một trong những mảnh của tôi, tất cả chúng đều giống nhau –

Trả lời

26

Tôi đã gặp sự cố tương tự khi sử dụng thư viện tương thích ActionBarSherlock. Giải pháp thay thế là bộ điều hợp của bạn mở rộng FragmentStatePagerAdapter thay vì FragmentPagerAdapter.

+2

vâng, điều này làm việc cho tôi –

+1

+1 @lukaciko tôi đã bị mắc kẹt trong điều này. – kishu27

+0

Hoạt động, cảm ơn! Sự cố đã bắt đầu sau khi thêm WebView vào một đoạn. – pointer

1

Thay vào đó bạn có thể làm theo các công trình xung quanh here mà tôi đã được đăng trước đó cho một vấn đề liên quan đến NPE trong khi sử dụng Tab + Fragment + ViewPager + FragmentStatePagerAdapter

Tôi hy vọng cùng một giải pháp sẽ làm việc cho bạn

-1

thử mu trả lời here về cơ bản ghi đè lên onSaveInstanceState, đặt ít nhất một giá trị trong gói. Làm tất cả các phân đoạn

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