FragmentTabHost - No tab known for tag null [duplicate]
Asked Answered
S

2

17

Few days ago I implemented TabHostFramgent in a Fragment with a NavigationDrawer, and I faced with a problem that is the following error :

java.lang.IllegalStateException: No tab known for tag null

The thing is that all works perfectly since my first item list of my NavigationDrawer is my TabHostFragment, so it works perfect, but the problem is when I go in example to the second item and then I want to go back to the first item, every time that I try so it crashes.

I was searching everywhere, here in SO, code.google.com, etc... and I still don't get the proper answer.

My tab_host_test_2.xmllooks like :

  <android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" />

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="0" />

        <FrameLayout
            android:id="@+id/realtabcontent"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>

</android.support.v4.app.FragmentTabHost>

My activity_main.xml where I've got my NavigationDrawer looks like :

 <android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Framelayout to display Fragments -->
    <FrameLayout
        android:id="@+id/frame_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


    <!-- Listview to display slider menu -->
    <ListView
        android:id="@+id/list_slidermenu"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@color/list_divider"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/list_selector"
        android:background="@color/list_background"/>
</android.support.v4.widget.DrawerLayout>

My TabHostFragment.java:

    public class TabHostFragment extends Fragment {

    public TabHostFragment(){

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

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        mTabHost = (FragmentTabHost)view.findViewById(android.R.id.tabhost);
        mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent);

        mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("Tab1"),
                MisOfertasFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("Tab2"),
                RecomendacionesFragment.class, null);




    }

}

My ActivityMain.java:

public class MainActivity extends FragmentActivity {
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;
    // saber si esta abierto
    public boolean mDrawerOpened;
    // nav drawer title
    private CharSequence mDrawerTitle;
    private FragmentTabHost mTabHost;
    // used to store app title
    private CharSequence mTitle;

    //para ponerlo visible
    public MenuItem mi;

    // 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)));
        //AyudaSugerencias
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[6], navMenuIcons.getResourceId(6, -1)));
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[7], navMenuIcons.getResourceId(7, -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(true);
        getActionBar().setBackgroundDrawable(new ColorDrawable(0xff1d97dd));
        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(
                        Html.fromHtml("<font color='ffffff'>"
                                + mTitle + "</font>"));

                // calling onPrepareOptionsMenu() to show action bar icons
                invalidateOptionsMenu();
                mDrawerOpened = false;
                syncState();

            }

            public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle(
                        Html.fromHtml("<font color='ffffff'>"
                                + mDrawerTitle + "</font>"));

                // calling onPrepareOptionsMenu() to hide action bar icons
                invalidateOptionsMenu();
                mDrawerOpened = true;
                syncState();
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);

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

    /**
     * Slide menu item click listener
     */
    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) {
        Fragment fragment = null;
        // 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;
            case R.id.ofertasRefresh:
                return true;
            case R.id.menu_search:
                return true;
            case R.id.newOffer:
                getFragmentManager().beginTransaction().replace(R.id.frame_container, new TipusNouProducte()).commit();
                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);
        if (mDrawerOpened) {
            menu.removeItem(R.id.ofertasRefresh);
            menu.removeItem(R.id.menu_search);
            menu.removeItem(R.id.newOffer);
        }
        if (!mDrawerOpened) {
            menu.add(Menu.NONE, R.id.ofertasRefresh, Menu.NONE, mTitle);
        }
        return super.onPrepareOptionsMenu(menu);

    }

    /**
     * Diplaying fragment view for selected nav drawer list item
     */
    private void displayView(int position) {
        mDrawerList.setItemChecked(position, true);
        mDrawerList.setSelection(position);
        setTitle(navMenuTitles[position]);
        mDrawerLayout.closeDrawer(mDrawerList);
        Fragment fragment = null;

        switch (position) {
            case 0:
                fragment = new TabHostFragment();
                break;
            case 1:
                fragment = new RecomendacionesFragment();
                break;
            case 2:
                fragment = new LocalizacionFragment();
                break;
            case 3:
                fragment = new ListaProductosFragment();
                break;
            case 4:
                fragment = new ConfiguracionFragment();
                break;
            case 5:
                fragment = new AyudaSugerenciasFragment();
                break;
            case 6:
                fragment = new AyudaSugerencias();
                break;

            default:

                break;
        }


        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment).commit(); /// here says that replace android.app.Fragment in FragmentTransaction cannot be applied...

            // 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);
    }



}

The full LogCat error is :

  03-04 16:53:05.708    2232-2232/info.androidhive.slidingmenu E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: info.androidhive.slidingmenu, PID: 2232
java.lang.IllegalStateException: No tab known for tag null
        at android.support.v4.app.FragmentTabHost.doTabChanged(FragmentTabHost.java:330)
        at android.support.v4.app.FragmentTabHost.onAttachedToWindow(FragmentTabHost.java:280)
        at android.view.View.dispatchAttachedToWindow(View.java:13406)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2707)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2714)
        at android.view.ViewGroup.addViewInner(ViewGroup.java:3919)
        at android.view.ViewGroup.addView(ViewGroup.java:3733)
        at android.view.ViewGroup.addView(ViewGroup.java:3678)
        at android.view.ViewGroup.addView(ViewGroup.java:3654)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:958)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
        at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

EDIT

The answer of @Y.S., was kinda different about what I was asking for, but it could be a solution, but it didn't worked fine at all, and the NavigationDrawer is under the TabHostFragment, etc... I don't want to change anything of my layout.

Spaceless answered 6/3, 2015 at 15:26 Comment(0)
E
2

There is another way to display tabs which can be used here.

Define TabHostFragment like this:

public class TabHostFragment extends Fragment implements ActionBar.TabListener{

    public TabHostFragment(){

    }

    AppSectionsPagerAdapter mAppSectionsPagerAdapter;
    ViewPager mViewPager;

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

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState){
        mAppSectionsPagerAdapter = new AppSectionsPagerAdapter(getChildFragmentManager());

        final ActionBar actionBar = ((FragmentActivity)getActivity()).getSupportActionBar();

        actionBar.setHomeButtonEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        mViewPager = (ViewPager) view.findViewById(R.id.pager);
        mViewPager.setAdapter(mAppSectionsPagerAdapter);
        mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                actionBar.setSelectedNavigationItem(position);
            }
        });

        for (int i = 0; i < mAppSectionsPagerAdapter.getCount(); i++) {
            actionBar.addTab(
                actionBar.newTab()
                        .setText(mAppSectionsPagerAdapter.getPageTitle(i))
                        .setTabListener(this));
        }
    }

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

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
        mViewPager.setCurrentItem(tab.getPosition());
    }

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

    public static class AppSectionsPagerAdapter extends FragmentPagerAdapter {

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

        @Override
        public Fragment getItem(int i) {
            Fragment f = null;
            switch (i) {
                case 0:
                    f = new MisOfertasFragment();
                    break;

                case 1:
                    f = new RecomendacionesFragment();
                    break;
            }

            return f;
        }

        @Override
        public int getCount() {
            return 2;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return getFragmentTitle(position);
        }

        private String getFragmentTitle(int position){
            if(position == 0)
                return "Tab 1";
            else if(position == 1)
                return "Tab 2";
            else
                return "";
        }
    }
}

Define tab_host_test2.xml like this:

<android.support.v4.view.ViewPager 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />

Rest of the code remains the same.

Try this. This should work.

EDIT:

Add this to the displayView() method:

if(position != 0)
    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
Eboat answered 6/3, 2015 at 16:9 Comment(51)
Hmm well the tabs now are fixed, and my button to slide my navigation drawer only goes if I do a rightslide, this is not the way I'm looking for sorry... In example : If i go to line 4 on my navigation drawer the tabs still there and I just want to show tabs on my first itemLacreshalacrimal
I understand ... for that there is a way ... let me edit my answer :)Eboat
Well.. I don't really think implement the actionbartab up to the NavigationDrawer it's a good idea for me it doesn't let the user click on the icon to open navigation drawer... Sorry :( DP : Everytime I turn back to the position 0 it multiplicates for any reason.Lacreshalacrimal
hmm ... can you add some screenshots of what is happening ? The app in which I have used this works correctly with tabs and nav drawer ... I think we can fix the problems, whatever they are :)Eboat
When I have time, i'll send you screenshots of what's happening :)Lacreshalacrimal
Are you there? I'm gonna send you the SS in chatLacreshalacrimal
Let us continue this discussion in chat.Eboat
@Skizo: where have you reached with this ? any luck ?Eboat
Hmm, yes I think I got it, someone gave me an advice, and said to me that put the stuff on my onViewCreate to onCreateView and I think it works... but I don't know if it could give me any problem ...Lacreshalacrimal
Master @Y.S can you check this post? https://mcmap.net/q/393781/-android-save-value-of-member-field-in-fragment-classLacreshalacrimal
@Skizo: interesting question. I've posted an answer, hope you find it useful ... best :)Eboat
Still not getting the correct answer? Bounty ends in 16h... :DLacreshalacrimal
I have posted an answer that worked for me. Hope you find it interesting ... :)Eboat
Okay, here you go :D, I'm glad that works for you! Shall I post the question with the error ID?Lacreshalacrimal
Do you mean the no view found for id error ? Sure, post the link ... :)Eboat
Hope you can help me out ;) --> #30170056Lacreshalacrimal
@Skizo: Have you ever faced this problem ?Eboat
didn't even think of that ... although it should work even without admin permission. It works fine in Eclipse, right ? :)Eboat
I'm glad to help you! :D tell me if you face with more issues I'll try to do my best to ppl that gave so much to me! :PLacreshalacrimal
Do you know if it's possible to copy a file from an APP? i.e: I want to copy the blabla.txt from a folder that it's inside of Instagram APP it is possible?Lacreshalacrimal
I feel that its not possible. Normally an app reserves access to its own files and folders. To make them publicly accessible, an app has to do some extra stuff. Do send me a reminder later to answer this in more detail ... :)Eboat
Okay, what I mean is like you programmatically check if exists this file, and then copy it or some sutff. I think it's not inside of the APP but it's inside of the folder itself i.e: Instagram/Photos/SomeStuff.txt I just want to try to acces to SomeStuff.txt, I think it could be, since If I plug in my APP to my PC I can acces to it...Lacreshalacrimal
I've found the way to do it, do you know how can I send a message to Gmail for example wich adding a document programmatically? I mean all dynamic, or if Gmail has an API to do it, or so? :PLacreshalacrimal
I'm not sure I understand what you want exactly, but maybe what you're looking for is the Drive API for Android.Eboat
I've used Dropbox API to upload a file to it, but now is something like Share to and can send it to a Gmail Account, Hotmail Acount, etc... you got me? I thought use something like this or this isn't it a good aproach? I mean, maybe there is a Library to do it or something.Lacreshalacrimal
Those links you provided are the correct answer for this, I suppose. Using an implicit Intent to share a file is definitely the right approach. This is explained in detail here.Eboat
You're welcome, of course. I also remembered that if you're looking for a common "library" that shares on social networks, there is something called socialauth, and another one called AndroidSocialNetworks. With them, you can share files on all social networks like FB, Twitter etc. using the same code. I used these two a long time back, so not sure if they still work properly ...Eboat
Oh, thank you yes it was also what I was looking for, thank you again mister ^^Lacreshalacrimal
Sorry for my spam (you're the only that helps me and I like it), Do you ever work with a File Chooser? I was looking for this, but what about if I want get a file of my MEGA APP, DROPBOX APP, does it matters or with this library I can use the files of my MEGA, DROPBOX, etc...? Thanks master.Lacreshalacrimal
No I haven't used that library before. I suppose if it has support for those apps/sites, you can use it for sure. I don't know of any library along those lines actually ...Eboat
Have you faced with this problem sometime?Lacreshalacrimal
Master do you know how can I get the event when a Pending Intent is fired? I've tried on onActivityResult() and onUserInteraction() but doesn't work to me, the thing that I want is the moment when the user press the Notification to do something, no when user touch the screen.Lacreshalacrimal
Can you please post this as a question and give me the link ? I'm not clear what you mean by "get the event when a Pending Intent is fired". Thanks :)Eboat
This is my questionLacreshalacrimal
Thake a look whener you can on my question :) thanksLacreshalacrimal
Have you updated Android Studio (if you use it)? I've updated and I must update com.android.support:appcompat-v7:21.0.0 and now I don't know how to put a switch widget on my ActionBar... do you know what I'm doing wrong? I posted a question right there -> #31089647Lacreshalacrimal
I am looking at that question. Meanwhile, if you have time, do take a look at my question ... :)Eboat
Posted an answer... I'm working on your question still tell me if it was helpfull ....Lacreshalacrimal
Have you checked my question? Can you figure out what's the issue?Lacreshalacrimal
Haven't you marked an answer correct ? I guess you got it ... :)Eboat
Have you found a solution for your question? Shall I investigate more? If you don't have got the correct answer just let me know I'll work on it even I can put a bounty again to help you :) dp-> I'm stuck on this do you know if it's possible? questionLacreshalacrimal
I've started a bounty on my question just wanted to let you know :PLacreshalacrimal
Do you know why I can show 2 dialogs at the same time? I mean I've got for example 1 dialog to show a list and if I click on item from the list it opens another dialog to put a password... but when I click on the item to open the password dialog the old dialog (list) closes :S all is insisde of an Activity (Theme Dialog), do you know why? :SLacreshalacrimal
Good afternon @Y.S. could you take a look on this question? Maybe you can guide me :P Thanks.Lacreshalacrimal
Maybe you can help a friend of mine out... he's out of ideas to do this take a look if you have time questionLacreshalacrimal
@Skizo-ozᴉʞS: Hi .... I had a look at that question. I think what he wants may be possible using some combination of a MaskedEditText and a TextWatcher. Through trial and error he should be able to achieve it. Feel free to ping me if you need additional help ... :)Eboat
I think he's stuck on, he has one Edittext where he can be able to put a mark, for instance 100,00 or 55,00 and he doesn't know when to put that comma, because the inputDecimal doesn't put it autommatically also he put a maxlenght to 6 because thinking with the "," it sums other character and doesn't know if he's on the correct way to do it, I told to him that maybe he can put for example a 100 and then convert it to a double or 55 and convert to a double with textwatcher but he's trying to do it but not getting it if you could guide him I'd appreciate otherwise I'll put a bounty :DLacreshalacrimal
Yash this is an easier question than the I told to you I guess... maybe you can guide him how to do it since the answers that they provided to him didn't work... feel free to help him thanks :P question I hope you understand the question or what he's trying to do I think he explained it really good otherwise I can explain it to you or tell to him that make an edit :PLacreshalacrimal
Ok, he edited with some new stuff about SharedPreferences and stuff feel free to read it agian if you did not :) and you are not busyLacreshalacrimal
@Skizo: So any luck with that question?Eboat
can you check this question please? :DLacreshalacrimal
G
0

specify in .xml file where you are using this TabHostFragment(complete path like com.my.TabHostFragment). like

 <com.my.TabHostFragment
        android:id="@+id/fragmentId"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         />
Garygarza answered 12/3, 2015 at 10:59 Comment(3)
What do you mean my package.TabHostFragment?Lacreshalacrimal
Just example. You have to specify TabHostFragment with package name in xml file.Garygarza
There may be another problem. But you must specify in xml, whenever you are using customized components.Garygarza

© 2022 - 2024 — McMap. All rights reserved.