Gewusst wie: hinzufügen tabhost mit navigation drawer?

Ich bin neu in android Entwicklung,die ich verwendet, navigation Schublade aus diesem http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/

Nun möchte ich hinzufügen, dass Tabhost mit es..kann mir jemand helfen mit diesem?
Das folgende ist mein code, den ich versucht..ich weiß nicht, ist Es nicht zeigen, warum..

   public class MainActivity extends FragmentActivity {
      private DrawerLayout mDrawerLayout;
      private ListView mDrawerList;
      private ActionBarDrawerToggle mDrawerToggle;

     //nav drawer title
      private CharSequence mDrawerTitle;

    //used to store app title
     private CharSequence mTitle;

     //slide menu items

     private String[] navMenuTitles;
     private TypedArray navMenuIcons;

     private ArrayList<NavDrawerItem> navDrawerItems;
     private NavDrawerListAdapter adapter;

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

        mTitle = mDrawerTitle = getTitle();

        //load slide menu items
        navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);

        //nav drawer icons from resources
        navMenuIcons = getResources()
                .obtainTypedArray(R.array.nav_drawer_icons);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.list_slidermenu);

        navDrawerItems = new ArrayList<NavDrawerItem>();
        //adding nav drawer items to array
        //Home
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons
                .getResourceId(0, -1)));
        //Find People
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons
                .getResourceId(1, -1)));
        //Photos
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons
                .getResourceId(2, -1)));
        //Communities, Will add a counter here
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons
                .getResourceId(3, -1)));
        //Pages
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons
                .getResourceId(4, -1)));
        //What's hot, We will add a counter here
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons
                .getResourceId(5, -1)));

        //Recycle the typed array
        navMenuIcons.recycle();

        mDrawerList.setOnItemClickListener(new SlideMenuClickListener());

        //setting the nav drawer list adapter
        adapter = new NavDrawerListAdapter(getApplicationContext(),
                navDrawerItems);
        mDrawerList.setAdapter(adapter);

        //enabling action bar app icon and behaving it as toggle button
        getActionBar().setDisplayHomeAsUpEnabled(false);
        getActionBar().setHomeButtonEnabled(true);

        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
                R.drawable.ic_drawer, //nav menu toggle icon
                R.string.app_name, //nav drawer open - description for
                                    //accessibility
                R.string.app_name //nav drawer close - description for
                                    //accessibility
        ) {
            public void onDrawerClosed(View view) {
                getActionBar().setTitle(mTitle);
                //calling onPrepareOptionsMenu() to show action bar icons
                getActionBar().setIcon(R.drawable.ic_drawer);
                invalidateOptionsMenu();
            }

            public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle(mDrawerTitle);
                //calling onPrepareOptionsMenu() to hide action bar icons
                getActionBar().setIcon(R.drawable.ic_drawer);
                invalidateOptionsMenu();
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        if (savedInstanceState == null) {
            //on first time display view for first nav item
            displayView(0);
        }
    }

private class SlideMenuClickListener implements
        ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        //display view for selected nav drawer item
        displayView(position);
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    //toggle nav drawer on selecting action bar app icon/title
    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }
    //Handle action bar actions click
    switch (item.getItemId()) {
    case R.id.action_settings:
        return true;

    default:
        return super.onOptionsItemSelected(item);
    }
}

/* *
 * Called when invalidateOptionsMenu() is triggered
 */
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    //if nav drawer is opened, hide the action items
    boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
    menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
    return super.onPrepareOptionsMenu(menu);
}

/**
 * Diplaying fragment view for selected nav drawer list item
 * */
private void displayView(int position) {
    //update the main content by replacing fragments
    Fragment fragment = null;
    switch (position) {
    case 0:
        fragment = new HomeFragment();
        break;
   /* case 1:
        fragment = new FindPeopleFragment();
        break;
    case 2:
        fragment = new PhotosFragment();
        break;
    case 3:
        fragment = new CommunityFragment();
        break;
    case 4:
        fragment = new PagesFragment();
        break;
    case 5:
        fragment = new WhatsHotFragment();
        break;
    */
    default:
        break;
    }

    if (fragment != null) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.frame_container, fragment).commit();

        //update selected item and title, then close the drawer
        mDrawerList.setItemChecked(position, true);
        mDrawerList.setSelection(position);
        setTitle(navMenuTitles[position]);
        mDrawerLayout.closeDrawer(mDrawerList);
    } else {
        //error in creating fragment
        Log.e("MainActivity", "Error in creating fragment");
    }
}

@Override
public void setTitle(CharSequence title) {
    mTitle = title;
    getActionBar().setTitle(mTitle);
}

/**
 * When using the ActionBarDrawerToggle, you must call it during
 * onPostCreate() and onConfigurationChanged()...
 */

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    //Sync the toggle state after onRestoreInstanceState has occurred.
    mDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    //Pass any configuration change to the drawer toggls
    mDrawerToggle.onConfigurationChanged(newConfig);
}

}

Homefragment

public class HomeFragment extends Fragment {


private FragmentTabHost mTabHost;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mTabHost = new FragmentTabHost(getActivity());
mTabHost.setup(getActivity(), getChildFragmentManager(), R.layout.fragment_home);

Bundle arg1 = new Bundle();
arg1.putInt("Arg for Frag1", 1);
mTabHost.addTab(mTabHost.newTabSpec("Tab1").setIndicator("Frag Tab1"),
    PhotosActivity.class, arg1);

Bundle arg2 = new Bundle();
arg2.putInt("Arg for Frag2", 2);
mTabHost.addTab(mTabHost.newTabSpec("Tab2").setIndicator("Frag Tab2"),
    PhotosActivity.class, arg2);

return mTabHost;
}

@Override
public void onDestroyView() {
super.onDestroyView();
mTabHost = null;
}

fragment_home.xml

     <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
      android:id="@android:id/tabhost">

    <LinearLayout 
            android:id="@+id/LinearLayout01"
            android:orientation="vertical" 
            android:layout_height="fill_parent"
            android:layout_width="fill_parent">

            <TabWidget 
                android:id="@android:id/tabs"
                android:layout_height="wrap_content" 
                android:layout_width="fill_parent">
            </TabWidget>
            <android.support.v4.view.ViewPager
      android:id="@+id/view_pager"
      android:layout_width="match_parent"
      android:layout_height="match_parent" />

            <FrameLayout 
                android:id="@android:id/tabcontent"
                android:layout_height="fill_parent"
                 android:layout_width="fill_parent">
            </FrameLayout>

    </LinearLayout>

    </TabHost>
  • Meinst du, dass Sie wollen ein TabHost im inneren der Schublade? Was haben Sie bisher ausprobiert?
  • Schau hier: stackoverflow.com/questions/26483069/...
  • mainactivity ist die gleiche wie in androidhhive exmple..aber ich ändere Homefragment..
  • ist es das, was ich will??
  • Den link, zur Verfügung gestellt Anshul Tyagi könnte Ihnen helfen, wie der code schon vorhanden ist
  • Ich bin nicht die erste Ausgabe noch
  • veröffentlichen Sie nicht alle codes.nur zeigen Sie mir den link, wo man das tabhost code?
  • nur eine minute.Antworten Ihnen in Kürze
  • zeigen Sie mir Ihre fragment_home.xml .
  • wie pro meine code sein gibt Fehler..ich bin nicht erlaubt zu posten Bild von logcat Fehler..aber es gibt..Verursacht durch: java.lang.IllegalStateException: Muss call setup (), das dauert ein Kontext und FragmentManager
  • siehe meine editierte Frage ich nach xml
  • implementiert, dass der code in der mainactivity.So, dass man das erwartete Ergebnis.Dont implementieren, dass der navigation drawer code in HomeFragment.Denn es erstreckt fragment.
  • möchten Sie die Laschen in die 1. fragment der Navigations-Schublade?
  • ja, das ist was ich will..können Sie mir helfen ?
  • Sie können überprüfen, meine Antwort here. wenn das nicht helfen Sie mir sagen
  • Nein, ich zeige nur, Sie etwas einfacher...aber wenn Sie nicht helfen, Sie sagen mir das erstellen einer navigation Schublade für Sie
  • Ich will gleiche navigation Schublade, die ich bereits in Frage..
  • Ich habe gesehen, dass android-hive-link für die navigation Schublade.können Sie mir den link, wo du die HomeFragment.java code?
  • prüfen Sie hier..stackoverflow.com/questions/9529267/...
  • sehen Sie diese http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/ und http://www.androidhive.info/2011/08/android-tab-layout-tutorial/ überprüfen Sie heraus diese zwei.und mir sagen, Was Sie tun müssen?
  • ich habe bereits Folgen, die aber mit der navigation drawer seine nicht funktioniert..hast du meine mainactivity..ist es dasselbe wie androidhive Beispiel der Navigations-Schublade..
  • es funktioniert auf jeden Fall.Ich habe es getan.
  • können Sie mir sagen,sind Sie mit kitkat-api-19 in eclipse?
  • hast du Sie gelöst?

InformationsquelleAutor parajs dfsb | 2015-01-23
Schreibe einen Kommentar