2013-10-30 38 views
2

我试图在片段中显示一个我的页面,但它给了我一个错误。通过片段显示活动时出现错误

我创建了一个名为FragmentContacts.java的单独Class文件,从中我显示了activity_contacts.xml的布局。

FragmentContacts Java代码:

package me.example.app; 

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class FragmentContacts extends FragmentActivity { 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // Get the view from fragmenttab1.xml 
     View view = inflater.inflate(R.layout.activity_contacts, container, false); 
     return view; 
    } 

    @Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     // setUserVisibleHint(true); 
    } 

} 

片段代码:

public Fragment getItem(int arg0) { 
       // getItem is called to instantiate the fragment for the given page. 
       // Return a DummySectionFragment (defined as a static inner class 
       // below) with the page number as its lone argument. 
       //Fragment fragment = new DummySectionFragment(); 
       //Bundle args = new Bundle(); 
       //args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1); 
       //fragment.setArguments(args); 
       //return fragment; 

       switch (arg0) { 

       // Open FragmentTab1.java Error on return fragmenttab1 
       case 0: 
        FragmentContacts fragmenttab1 = new FragmentContacts(); 
        return fragmenttab1; 


       return null; 
      } 
+0

它不给你'一个error'。它给你一些非常具体的东西。这里没有人是巫师。什么是错误? – nhgrif

+0

刚刚解决它。我分别创建了Fragment,现在它工作。谢谢 –

+0

您应该删除问题,或发布您的解决问题的答案,然后接受该答案。 – nhgrif

回答

2

解决!

这是我做的: 1)我为每个选项卡单独制作了Fragment Class。 2)然后,我使用这种情况为了在各自的标签中显示每个活动。

(对不起,我缺乏技术的话。)

解决方案:

package me.example.app; 

import java.util.Locale; 

import android.app.ActionBar; 
import android.app.FragmentTransaction; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

public class HomeActivity extends FragmentActivity implements 
     ActionBar.TabListener { 

    /** 
    * The {@link android.support.v4.view.PagerAdapter} that will provide 
    * fragments for each of the sections. We use a 
    * {@link android.support.v4.app.FragmentPagerAdapter} derivative, which 
    * will keep every loaded fragment in memory. If this becomes too memory 
    * intensive, it may be best to switch to a 
    * {@link android.support.v4.app.FragmentStatePagerAdapter}. 
    */ 
    SectionsPagerAdapter mSectionsPagerAdapter; 
    /** 
    * The {@link ViewPager} that will host the section contents. 
    */ 
    ViewPager mViewPager; 

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

     // Set up the action bar. 
     final ActionBar actionBar = getActionBar(); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     // Create the adapter that will return a fragment for each of the four 
     // primary sections of the app. 
     mSectionsPagerAdapter = new SectionsPagerAdapter(
       getSupportFragmentManager()); 

     // Set up the ViewPager with the sections adapter. 
     mViewPager = (ViewPager) findViewById(R.id.pager); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 

     // When swiping between different sections, select the corresponding 
     // tab. We can also use ActionBar.Tab#select() to do this if we have 
     // a reference to the Tab. 
     mViewPager 
       .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
        @Override 
        public void onPageSelected(int position) { 
         actionBar.setSelectedNavigationItem(position); 
        } 
       }); 

     // For each of the sections in the app, add a tab to the action bar. 
     for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { 
      // Create a tab with text corresponding to the page title defined by 
      // the adapter. Also specify this Activity object, which implements 
      // the TabListener interface, as the callback (listener) for when 
      // this tab is selected. 
      actionBar.addTab(actionBar.newTab() 
        .setText(mSectionsPagerAdapter.getPageTitle(i)) 
        .setTabListener(this)); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.home, menu); 
     return true; 
    } 

    @Override 
    public void onTabSelected(ActionBar.Tab tab, 
      FragmentTransaction fragmentTransaction) { 
     // When the given tab is selected, switch to the corresponding page in 
     // the ViewPager. 
     mViewPager.setCurrentItem(tab.getPosition()); 
    } 

    @Override 
    public void onTabUnselected(ActionBar.Tab tab, 
      FragmentTransaction fragmentTransaction) { 
    } 

    @Override 
    public void onTabReselected(ActionBar.Tab tab, 
      FragmentTransaction fragmentTransaction) { 
    } 

    /** 
    * A {@link FragmentPagerAdapter} that returns a fragment corresponding to 
    * one of the sections/tabs/pages. 
    */ 
    public class SectionsPagerAdapter extends FragmentPagerAdapter { 

     public SectionsPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int arg0) { 
      // getItem is called to instantiate the fragment for the given page. 
      // Return a DummySectionFragment (defined as a static inner class 
      // below) with the page number as its lone argument.  
      switch (arg0){ 
      case 0: 
       Fragment fragmentContacts = new FragmentContacts(); 
       return fragmentContacts; 
      case 1: 
       Fragment fragmentMissed = new FragmentMissed(); 
       return fragmentMissed; 
      case 2: 
       Fragment fragmentRecent = new FragmentRecent(); 
       return fragmentRecent; 
      case 3: 
       Fragment fragmentGroups = new FragmentGroups(); 
       return fragmentGroups; 
      } 
      return null; 
     } 

     @Override 
     public int getCount() { 
      // Show 4 total pages. 
      return 4; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      Locale l = Locale.getDefault(); 
      switch (position) { 
      case 0: 
       return getString(R.string.title_section1).toUpperCase(l); 
      case 1: 
       return getString(R.string.title_section2).toUpperCase(l); 
      case 2: 
       return getString(R.string.title_section3).toUpperCase(l); 
      case 3: 
       return getString(R.string.title_section4).toUpperCase(l); 
      } 
      return null; 
     } 
    } 


    /**Contacts*/ 
    public static class FragmentContacts extends Fragment { 
     /** 
     * The fragment argument representing the section number for this 
     * fragment. 
     */ 
     public static final String ARG_SECTION_NUMBER = "section_number"; 

     public FragmentContacts() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.activity_contacts, 
        container, false); 
      return rootView; 
     } 
    } 

    /**Missed Call*/ 
    public static class FragmentMissed extends Fragment { 
     /** 
     * The fragment argument representing the section number for this 
     * fragment. 
     */ 
     public static final String ARG_SECTION_NUMBER = "section_number"; 

     public FragmentMissed() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.activity_missed, 
        container, false); 
      return rootView; 
     } 
    } 

    /**Recent Call*/ 
    public static class FragmentRecent extends Fragment { 
     /** 
     * The fragment argument representing the section number for this 
     * fragment. 
     */ 
     public static final String ARG_SECTION_NUMBER = "section_number"; 

     public FragmentRecent() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.activity_recent, 
        container, false); 
      return rootView; 
     } 
    } 

    /**Groups*/ 
    public static class FragmentGroups extends Fragment { 
     /** 
     * The fragment argument representing the section number for this 
     * fragment. 
     */ 
     public static final String ARG_SECTION_NUMBER = "section_number"; 

     public FragmentGroups() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.activity_group, 
        container, false); 
      return rootView; 
     } 
    } 


}