title: NullPointerException: name == null
body: <p>I'm developing an Android application that uses Fragments. I got this error.</p>
  
  <pre><code>Caused by: java.lang.NullPointerException: name == null
  </code></pre>
  
  <p>What does <code>name == null</code> mean? Here's the full log</p>
  
  <pre><code>08-04 15:02:22.422: E/AndroidRuntime(2499): FATAL EXCEPTION: main
  08-04 15:02:22.422: E/AndroidRuntime(2499): java.lang.RuntimeException: Unable to start activity ComponentInfo{fi.peltoset.mikko.home/fi.peltoset.mikko.home.Koti}: android.view.InflateException: Binary XML file line #17: Error inflating class fragment
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.os.Handler.dispatchMessage(Handler.java:99)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.os.Looper.loop(Looper.java:137)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.app.ActivityThread.main(ActivityThread.java:4745)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at java.lang.reflect.Method.invokeNative(Native Method)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at java.lang.reflect.Method.invoke(Method.java:511)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at dalvik.system.NativeStart.main(Native Method)
  08-04 15:02:22.422: E/AndroidRuntime(2499): Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class fragment
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.app.Activity.setContentView(Activity.java:1867)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at fi.peltoset.mikko.home.Koti.onCreate(Koti.java:13)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.app.Activity.performCreate(Activity.java:5008)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     ... 11 more
  08-04 15:02:22.422: E/AndroidRuntime(2499): Caused by: java.lang.NullPointerException: name == null
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at java.lang.VMClassLoader.findLoadedClass(Native Method)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:354)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at java.lang.ClassLoader.loadClass(ClassLoader.java:491)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.app.Fragment.instantiate(Fragment.java:574)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.app.Fragment.instantiate(Fragment.java:552)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.app.Activity.onCreateView(Activity.java:4656)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
  08-04 15:02:22.422: E/AndroidRuntime(2499):     ... 21 more
  </code></pre>
  
  <p>This is in a class called <code>Navigation</code>. It extends <code>android.app.Fragment</code>.</p>
  
  <p>In it's <code>onCreateView</code> method I inflate the layout and return it. In the <code>onActivityCreated</code> method I check if the layout has two panes (I have different layouts for different devices) and based on that I add onClickListeners to these. </p>
  
  <p>My code looks like this.</p>
  
  <pre><code>public class Navigation extends Fragment {
      private OnItemSelectedListener listener;
      private boolean dualPane = false;
  
      public interface OnItemSelectedListener {
          public void onMenuItemSelected(int fragmentId);
      }
  
      public void onAttach(Activity activity) {
          super.onAttach(activity);
  
          if(activity instanceof OnItemSelectedListener) {
              this.listener = (OnItemSelectedListener) activity;
          } else {
              ...
          }
      }
  
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
          View view = inflater.inflate(R.layout.activity_navigation, container, false);
  
          return view;
      }
  
      public void onActivityCreated(Bundle savedInstanceState) {
          super.onActivityCreated(savedInstanceState);
  
          View contentPane = getActivity().findViewById(R.id.contentFragment);
          dualPane = contentPane != null &amp;&amp; contentPane.getVisibility() == View.VISIBLE;
  
          if(dualPane) {
              final ListView menu = (ListView) getActivity().findViewById(R.id.valikko);
  
              menu.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
  
              String[] texts = new String[] {
                      ...
              };
  
              ArrayList&lt;MenuItem&gt; items = new ArrayList&lt;MenuItem&gt;();
              items.add(new MenuItem("Home", R.drawable.koti2));
              ...
  
              ImageArrayAdapter adapter = new ImageArrayAdapter(getActivity(), items, texts);
              menu.setAdapter(adapter);
  
              menu.setOnItemClickListener(new OnItemClickListener() {
                  @Override
                  public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {
                      String item = ((TextView) view.findViewById(R.id.label)).getText().toString();
  
                      listener.onMenuItemSelected(0); // TODO ...
                  }           
              });
          } else {
              ImageView btnYleiskatsaus   = (ImageView) getActivity().findViewById(R.id.btnYleiskatsaus);
              ...
  
              btnYleiskatsaus.setOnClickListener(onMenuClikkedListener);
              ...
          }       
      }
  
      private OnClickListener onMenuClikkedListener = new OnClickListener() {
  
          @Override
          public void onClick(View v) {           
              ...         
          }
      };
  }
  </code></pre>
  
  <p>The layout file <code>layout-sw720dp-land/activity_navigation.xml</code> looks this</p>
  
  <pre><code>&lt;LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:background="@color/pressed_koti"
      android:orientation="vertical" &gt;
  
      &lt;ListView
          android:id="@+id/valikko"
          android:layout_width="match_parent"
          android:layout_height="0dp"
          android:layout_weight="1" &gt;
      &lt;/ListView&gt;
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>Here is the <code>activity_koti.xml</code> file.</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="horizontal" &gt;
  
      &lt;fragment 
          android:id="@+id/menuFragment"
          android:layout_width="300dp"
          android:layout_height="match_parent"
          class="fi.peltoset.mikko.home.Navigation" /&gt;
  
      &lt;fragment 
          android:id="@+id/contentFragment"
          android:layout_width="fill_parent"
          android:layout_height="match_parent" /&gt;
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>I ran the application on an emulator with Android 4.1.2. </p>
  
  <p>What causes these errors and how do I fix them?</p>