title: Android Tabs Fragments
body: <p>My tabs fragments doesnt seems to show anything. I know there must be something missing in my codes. Could someone please help me? Below are my attempt. </p>
  
  <p>Modified after the suggestion by UgglyNoodle</p>
  
  <p>Problems : My fragment Tab is not showing anything.</p>
  
  <p>MainActivity.java</p>
  
  <pre><code>  public class MainActivity extends SherlockFragmentActivity implements TabListener {
      private Fragment mFragment;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
  
          setContentView(R.layout.main);
  
          ActionBar actionBar = getSupportActionBar();
          actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
          actionBar.setDisplayShowTitleEnabled(true);
  
          //mFragment = new AppleFragment();
  
          Tab tab = actionBar.newTab()
                  .setText("Apple")
                  .setTabListener(this)
                  .setIcon(R.drawable.apple);
  
          actionBar.addTab(tab);
  
  
      }
  
      @Override
      public void onTabSelected(Tab tab, FragmentTransaction ft) {
           if (mFragment == null) {
                  mFragment = new AppleFragment();
                  ft.add(android.R.id.content, mFragment);
              } else {
                  ft.attach(mFragment);
              }
      }
  
      @Override
      public void onTabUnselected(Tab tab, FragmentTransaction ft) {
          ft.detach(mFragment);
      }
  
      @Override
      public void onTabReselected(Tab tab, FragmentTransaction ft) {
      }
  }
  </code></pre>
  
  <p>AppleFragment.java        </p>
  
  <pre><code>    public class AppleFragment extends SherlockListFragment{
  
  
          static final String URL = "http://api.androidhive.info/pizza/?format=xml";
          // XML node keys
          static final String KEY_ITEM = "item"; // parent node
          static final String KEY_ID = "id";
          static final String KEY_NAME = "name";
          static final String KEY_COST = "cost";
          static final String KEY_DESC = "description";
  
  
  
          @Override
          public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
  
          return super.onCreateView(inflater, container, savedInstanceState);
  
          }
  
  
          public void onActivityCreated(Bundle savedInstanceState) {
  
              ArrayList&lt;HashMap&lt;String, String&gt;&gt; menuItems = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;();
  
  
              XMLParser parser = new XMLParser();
              String xml = parser.getXmlFromUrl(URL); // getting XML
              Document doc = parser.getDomElement(xml); // getting DOM element
  
              NodeList nl = doc.getElementsByTagName(KEY_ITEM);
              // looping through all item nodes &lt;item&gt;
              for (int i = 0; i &lt; nl.getLength(); i++) {
                  // creating new HashMap
                  HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();
                  Element e = (Element) nl.item(i);
                  // adding each child node to HashMap key =&gt; value
                  map.put(KEY_ID, parser.getValue(e, KEY_ID));
                  map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
                  map.put(KEY_COST, "Rs." + parser.getValue(e, KEY_COST));
                  map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
  
                  // adding HashList to ArrayList
                  menuItems.add(map);
              }
  
              ListAdapter adapter = new SimpleAdapter(getActivity(), menuItems,
                      R.layout.list_item,
                      new String[] { KEY_NAME, KEY_DESC, KEY_COST }, new int[] {
                              R.id.name, R.id.desciption, R.id.cost });
  
  
              setListAdapter(adapter);    
  
  
          }
  }
  </code></pre>
  
  <p>XMLParser.java</p>
  
  <pre><code>public class XMLParser {
  
      // constructor
      public XMLParser() {
  
      }
  
      /**
       * Getting XML from URL making HTTP request
       * @param url string
       * */
      public String getXmlFromUrl(String url) {
          String xml = null;
  
          try {
              // defaultHttpClient
              DefaultHttpClient httpClient = new DefaultHttpClient();
              HttpPost httpPost = new HttpPost(url);
  
              HttpResponse httpResponse = httpClient.execute(httpPost);
              HttpEntity httpEntity = httpResponse.getEntity();
              xml = EntityUtils.toString(httpEntity);
  
          } catch (UnsupportedEncodingException e) {
              e.printStackTrace();
          } catch (ClientProtocolException e) {
              e.printStackTrace();
          } catch (IOException e) {
              e.printStackTrace();
          }
          // return XML
          return xml;
      }
  
      /**
       * Getting XML DOM element
       * @param XML string
       * */
      public Document getDomElement(String xml){
          Document doc = null;
          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
          try {
  
              DocumentBuilder db = dbf.newDocumentBuilder();
  
              InputSource is = new InputSource();
                  is.setCharacterStream(new StringReader(xml));
                  doc = db.parse(is); 
  
              } catch (ParserConfigurationException e) {
                  Log.e("Error: ", e.getMessage());
                  return null;
              } catch (SAXException e) {
                  Log.e("Error: ", e.getMessage());
                  return null;
              } catch (IOException e) {
                  Log.e("Error: ", e.getMessage());
                  return null;
              }
  
              return doc;
      }
  
      /** Getting node value
        * @param elem element
        */
       public final String getElementValue( Node elem ) {
           Node child;
           if( elem != null){
               if (elem.hasChildNodes()){
                   for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
                       if( child.getNodeType() == Node.TEXT_NODE  ){
                           return child.getNodeValue();
                       }
                   }
               }
           }
           return "";
       }
  
       /**
        * Getting node value
        * @param Element node
        * @param key string
        * */
       public String getValue(Element item, String str) {     
              NodeList n = item.getElementsByTagName(str);        
              return this.getElementValue(n.item(0));
          }
  }
  </code></pre>
  
  <p>Logcat : </p>
  
  <pre><code>10-05 16:24:30.031: E/AndroidRuntime(19244): FATAL EXCEPTION: main
  10-05 16:24:30.031: E/AndroidRuntime(19244): java.lang.RuntimeException: Unable to start activity ComponentInfo{in.wptrafficanalyzer.actionbarsherlocknavtab/in.wptrafficanalyzer.actionbarsherlocknavtab.MainActivity}: android.os.NetworkOnMainThreadException
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.os.Handler.dispatchMessage(Handler.java:99)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.os.Looper.loop(Looper.java:137)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.app.ActivityThread.main(ActivityThread.java:4512)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at java.lang.reflect.Method.invokeNative(Native Method)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at java.lang.reflect.Method.invoke(Method.java:511)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:982)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at dalvik.system.NativeStart.main(Native Method)
  10-05 16:24:30.031: E/AndroidRuntime(19244): Caused by: android.os.NetworkOnMainThreadException
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at java.net.InetAddress.getAllByName(InetAddress.java:220)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at in.wptrafficanalyzer.actionbarsherlocknavtab.XMLParser.getXmlFromUrl(XMLParser.java:45)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at in.wptrafficanalyzer.actionbarsherlocknavtab.AppleFragment.onCreate(AppleFragment.java:50)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:834)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:505)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1136)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.app.Activity.performStart(Activity.java:4475)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1943)
  10-05 16:24:30.031: E/AndroidRuntime(19244):    ... 11 more
  </code></pre>