ListView and Tabwidget in fragment

The following is part of my code:

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 = getFragmentManager();
            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");
        }

How to make a view from the HomeFragment list or tab.

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class HomeFragment extends Fragment {

    public HomeFragment(){}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.tabs_scroll, container, false);
        return rootView;
    }
}

if I have to extend listfragment, line:

fragmentManager.beginTransaction()
                        .replace(R.id.frame_container, fragment).commit();

note the error: "The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, HomeFragment)"

please, how to do it, and how I am still adding a tab widget, assuming that I do not want to make it a listview

+4
source share
1 answer

Try it.

You cannot do this Fragment fragment = new HomeFragment();, if you do this, you will receive Can not convert HomeFragment to Fragment, because it HomeFragmentis a fragment class, therefore you cannot assign it to Fragment. So, you need to like HomeFragment fragment = new HomeFragment();For example, from your code.

switch (position) {
        case 0:
            HomeFragment fragment = new HomeFragment();

            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");
            }
            break;

            // do like this for remaining cases

        default:
            break;
        }
+1
source

Source: https://habr.com/ru/post/1525741/


All Articles