title: Unable to instantiate fragment make sure class name exists, is public, and has an empty constructor that is public
body: <p>I am using the Fragment and When I change the orientation of the device. If initially its portrait and when i change it to landscape then my application crash. I added the logcat here. I have gone through many links but could not find the right answer.</p>
  
  <p>Please help me to solve this issue.</p>
  
  <p>Thanks</p>
  
  <pre><code>public class PageViewActivity extends FragmentActivity {
  
      private ViewPager viewPager;  
      private NoticePageAdapter noticePageAdapter;
      private TextView titleText;
      private int pageIndex;
      private static int restTime = 0;
      private long lastTime;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
          setContentView(R.layout.activity_page_view);
  
          getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title2);
          titleText = (TextView) findViewById(R.id.title2);
          titleText.setText(R.string.app_name);
  
          // Create the adapter that will return a fragment for each of the three  
          // primary sections of the app.  
          noticePageAdapter = new NoticePageAdapter(getSupportFragmentManager());
  
          // Set up the ViewPager with the sections adapter.  
          viewPager = (ViewPager) findViewById(R.id.viewpager);  
          Intent intent = getIntent();
          pageIndex = intent.getIntExtra("notice_position", 0);
          viewPager.setAdapter(noticePageAdapter);
          viewPager.setCurrentItem(pageIndex, true);
  
          lastTime = System.currentTimeMillis();
  
          //Check the rest time. If it exceed the 30 sec then finish the activity.
          new CheckTimeThread().start();
      }
  
      /** 
       * A {@link FragmentPagerAdapter} that returns a fragment corresponding to 
       * one of the sections/tabs/pages. 
       */  
      class NoticePageAdapter extends FragmentPagerAdapter {  
  
          public NoticePageAdapter(FragmentManager fm) {  
              super(fm);  
          }  
  
          @Override  
          public Fragment getItem(int position) {  
              Fragment fragment = new NoticeFragment();
              Bundle args = new Bundle();
              args.putInt(NoticeFragment.TEMPLATE_POSITION, position + 1);  
              fragment.setArguments(args);  
              return fragment;
          }  
  
          @Override  
          public int getCount() {  
              return NoticeData.templateId.length;  
          }  
      }  
  
      /** 
       * A Notice fragment representing a notices of the app, but that simply 
       * displays notices 
       */  
      public class NoticeFragment extends Fragment { 
          public static final String TEMPLATE_POSITION = "template_position";
          private TextView noticeHeaderTextView;
          private TextView noticeContentTextView;
          private ImageView noticeImageView;
  
          @Override  
          public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
              int templatePosition = getArguments().getInt(TEMPLATE_POSITION);
              int templateId = 0;
              int tempVar;
  
              tempVar = templatePosition - 1;
              templateId = Integer.parseInt(NoticeData.templateId[tempVar]);
  
              int res = R.layout.first_template;
  
              switch (templateId) {
              case 1:
                  res = R.layout.first_template;
                  break;
              case 2:
                  res = R.layout.second_template;
                  break;
              case 3:
                  res = R.layout.third_template;
                  break;
              case 4:
                  res = R.layout.fourth_template;
                  break;
              default:
                  break;
              }
  
              View rootView = inflater.inflate(res, container, false);
              noticeHeaderTextView = (TextView)rootView.findViewById(R.id.noticeHeading);
              noticeHeaderTextView.setText(Html.fromHtml(NoticeData.noticeHeading[tempVar]));
  
              noticeContentTextView = (TextView)rootView.findViewById(R.id.noticeContent);
              noticeContentTextView.setText(Html.fromHtml(NoticeData.noticeContent[tempVar]));
  
              noticeImageView = (ImageView)rootView.findViewById(R.id.noticeImageView);
              UrlImageViewHelper.setUrlDrawable(noticeImageView, NoticeData.imagesURL[tempVar]);
  
              DisplayMetrics metrics = getResources().getDisplayMetrics();
              int width = metrics.widthPixels;
  
              if(templateId == 3) {
                  noticeImageView.getLayoutParams().width = width / 2;
              }
              else if(templateId == 2) {
                  noticeHeaderTextView.getLayoutParams().width = width/2;
                  noticeContentTextView.getLayoutParams().width = width/2;
              }
  
              RelativeLayout relativeLayout = (RelativeLayout)rootView.findViewById(R.id.relativeLayout);
              relativeLayout.setOnTouchListener(new OnTouchListener() {
                  @Override
                  public boolean onTouch(View v, MotionEvent event) {
                      resetRestTime();
                      return false;
                  }
              });
  
              return rootView;  
          }  
      }
  }
  </code></pre>
  
  <p>Error Trace:</p>
  
  <pre><code>06-24 18:24:36.501: E/AndroidRuntime(11863): FATAL EXCEPTION: main
  06-24 18:24:36.501: E/AndroidRuntime(11863): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.noticeboard/com.noticeboard.PageViewActivity}: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.noticeboard.PageViewActivity$NoticeFragment: make sure class name exists, is public, and has an empty constructor that is public
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3365)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.app.ActivityThread.access$700(ActivityThread.java:128)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1165)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.os.Handler.dispatchMessage(Handler.java:99)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.os.Looper.loop(Looper.java:137)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.app.ActivityThread.main(ActivityThread.java:4514)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at java.lang.reflect.Method.invokeNative(Native Method)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at java.lang.reflect.Method.invoke(Method.java:511)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at dalvik.system.NativeStart.main(Native Method)
  06-24 18:24:36.501: E/AndroidRuntime(11863): Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.noticeboard.PageViewActivity$NoticeFragment: make sure class name exists, is public, and has an empty constructor that is public
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.support.v4.app.Fragment.instantiate(Fragment.java:399)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.support.v4.app.FragmentState.instantiate(Fragment.java:97)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.support.v4.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:1760)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:200)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at com.noticeboard.PageViewActivity.onCreate(PageViewActivity.java:40)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.app.Activity.performCreate(Activity.java:4465)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    ... 12 more
  06-24 18:24:36.501: E/AndroidRuntime(11863): Caused by: java.lang.InstantiationException: can't instantiate class com.noticeboard.PageViewActivity$NoticeFragment; no empty constructor
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at java.lang.Class.newInstanceImpl(Native Method)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at java.lang.Class.newInstance(Class.java:1319)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    at android.support.v4.app.Fragment.instantiate(Fragment.java:388)
  06-24 18:24:36.501: E/AndroidRuntime(11863):    ... 19 more
  </code></pre>