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/
undhttp://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 Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, um dies zu tun, ändern Sie die HomeFragment wie diese:
Adapter-Klasse
Ihre layout-Datei für den viewpager:
Kompilieren diese Abhängigkeit, um es zu benutzen: kompilieren
'com.astuetz:pagerslidingtabstrip:1.0.1'
Dem Fragment, das der viewpager wird für jede Registerkarte werden wie:
Und layout:
Ich hoffe, es hilft!!!!
Du noch keine Ansicht für Ihre TabHost Anzeigen. Versuchen Sie, fügen Sie anzeigen in Ihrem
setIndicator()
Methode wie diese.