Android的错误 - 该方法替换型FragmentTransaction(INT,片段)是不适用的参数(INT,ListFragment) [英] Android Error - The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, ListFragment)

查看:161
本文介绍了Android的错误 - 该方法替换型FragmentTransaction(INT,片段)是不适用的参数(INT,ListFragment)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有错误listfragment的方法替换型FragmentTransaction(INT,片段)是不适用的参数(INT,ListFragment)我应该怎么办?因为我不能出现我片段

这是我的code:

 进口info.androidhive.slidingmenu.adapter.NavDrawerListAdapter;
进口info.androidhive.slidingmenu.model.NavDrawerItem;进口的java.util.ArrayList;进口android.app.Activity;
进口android.app.Fragment;
进口android.app.FragmentManager;
进口android.content.res.Configuration;
进口android.content.res.TypedArray;
进口android.os.Bundle;
进口android.support.v4.app.ActionBarDrawerToggle;
进口android.support.v4.app.ListFragment;
进口android.support.v4.widget.DrawerLayout;
进口android.util.Log;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.view.View;
进口android.widget.AdapterView;
进口android.widget.ListView;公共类MainActivity延伸活动{    私人DrawerLayout mDrawerLayout;
    私人的ListView mDrawerList;
    私人ActionBarDrawerToggle mDrawerToggle;    //导航抽屉称号
    私人CharSequence的mDrawerTitle;    //用于存储应用程序标题
    私人CharSequence的mTitle;    //滑动菜单项
    私有String [] navMenuTitles;
    私人TypedArray navMenuIcons;    私人的ArrayList< NavDrawerItem> navDrawerItems;
    私人NavDrawerListAdapter适配器;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);        mTitle = mDrawerTitle =的getTitle();        //负荷滑动菜单项
        navMenuTitles = getResources()getStringArray(R.array.nav_drawer_items)。        从资源//导航抽屉图标
        navMenuIcons = getResources()
                .obtainTypedArray(R.array.nav_drawer_icons);        mDrawerLayout =(DrawerLayout)findViewById(R.id.drawer_layout);
        mDrawerList =(ListView控件)findViewById(R.id.list_slidermenu);        navDrawerItems =新的ArrayList< NavDrawerItem>();        //添加导航抽屉里的物品数组
        //首页
        navDrawerItems.add(新NavDrawerItem(navMenuTitles [0],navMenuIcons.getResourceId(0,-1)));
        //找人
        navDrawerItems.add(新NavDrawerItem(navMenuTitles [1],navMenuIcons.getResourceId(1,-1)));
        // 相片
        navDrawerItems.add(新NavDrawerItem(navMenuTitles [2],navMenuIcons.getResourceId(2,-1)));
        //社区,这里将添加计数器
        navDrawerItems.add(新NavDrawerItem(navMenuTitles [3],navMenuIcons.getResourceId(3,-1),真的,22));
        //网页
        navDrawerItems.add(新NavDrawerItem(navMenuTitles [4],navMenuIcons.getResourceId(4,-1)));
        //什么是热的,我们将在这里添加计数器
        navDrawerItems.add(新NavDrawerItem(navMenuTitles [5],navMenuIcons.getResourceId(5,-1),真的,50+));
        //回收类型数组
        navMenuIcons.recycle();        mDrawerList.setOnItemClickListener(新SlideMenuClickListener());        //设置导航抽屉名单适配器
        适配器=新NavDrawerListAdapter(getApplicationContext()
                navDrawerItems);
        mDrawerList.setAdapter(适配器);        //使操作栏中的应用程序图标和行为作为切换按钮
        getActionBar()setDisplayHomeAsUpEnabled(真)。
        mDrawerToggle =新ActionBarDrawerToggle(这一点,mDrawerLayout,
                R.drawable.ic_drawer,//导航菜单切换图标
                R.string.app_name,//导航抽屉打开 - 描述的可访问性
                R.string.app_name //导航抽屉接近 - 描述的可访问性
        ){
            公共无效onDrawerClosed(查看视图){
                。getActionBar()的setTitle(mTitle);
                //调用prepareOptionsMenu()来显示操作栏图标
                invalidateOptionsMenu();
            }            公共无效onDrawerOpened(查看drawerView){
                。getActionBar()的setTitle(mDrawerTitle);
                //调用prepareOptionsMenu()隐藏操作栏图标
                invalidateOptionsMenu();
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);        如果(savedInstanceState == NULL){
            //对第一个项目的资产净值首次显示视图
            displayView(0);
        }
    }    / **
     *滑动菜单项,点击监听器
     * * /
    私有类SlideMenuClickListener工具
            ListView.OnItemClickListener {
        @覆盖
        公共无效onItemClick(适配器视图<>母公司,观景,INT位置,
                长ID){
            //选定导航抽屉项显示视图
            displayView(位置);
        }
    }    @覆盖
    公共布尔onCreateOptionsMenu(菜单菜单){
        。getMenuInflater()膨胀(R.menu.main,菜单);
        返回true;
    }    @覆盖
    公共布尔onOptionsItemSelected(菜单项项){
        //切换上选择操作栏中的应用程序图标/标题导航抽屉
        如果(mDrawerToggle.onOptionsItemSelected(项目)){
            返回true;
        }
        //处理操作栏中点击动作
        开关(item.getItemId()){
        案例R.id.action_settings:
            返回true;
        默认:
            返回super.onOptionsItemSelected(项目);
        }
    }    / * *
     *时调用invalidateOptionsMenu()被触发
     * /
    @覆盖
    prepareOptionsMenu(菜单菜单)上公共布尔{
        //如果导航抽屉被打开,隐藏行动项目
        布尔drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
        menu.findItem(R.id.action_settings).setVisible(drawerOpen!);
        返回super.on prepareOptionsMenu(菜单);
    }    / **
     所选导航抽屉列表项* Diplaying片段视图
     * * /
    私人无效displayView(INT位置){
        //更新替换片段的主要内容
        片段片段= NULL;
        ListFragment listfragment = NULL;        开关(位置){
        情况下0:
            片段=新HomeFragment();
            打破;
        情况1:
            片段=新FindPeopleFragment();
            打破;
        案例2:
            片段=新PhotosFragment();
            打破;
        案例3:
            listfragment =新ReviewFragment();
            打破;
        情况4:
            片段=新PagesFragment();
            打破;
        情况5:
            片段=新WhatsHotFragment();
            打破;        默认:
            打破;
        }        如果(片段!= NULL){
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container,片段).commit();            //更新所选项目和标题,然后关上抽屉
            mDrawerList.setItemChecked(位置,真正的);
            mDrawerList.setSelection(位置);
            (navMenuTitles [位置])的setTitle;
            mDrawerLayout.closeDrawer(mDrawerList);         }否则如果(listfragment!= NULL){
                //如果一个listfragment做的东西
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction()
                        .replace(R.id.frame_container1,listfragment).commit();
            }其他{
                //错误创建片段
                Log.e(MainActivity,出错创建片段);
            }
        }    @覆盖
    公共无效的setTitle(CharSequence的标题){
        mTitle =称号;
        。getActionBar()的setTitle(mTitle);
    }    / **
     *当使用ActionBarDrawerToggle,你必须在调用它
     * onPostCreate()和onConfigurationChanged()...
     * /    @覆盖
    保护无效onPostCreate(捆绑savedInstanceState){
        super.onPostCreate(savedInstanceState);
        //同步onRestoreInstanceState后切换状态已经发生。
        mDrawerToggle.syncState();
    }    @覆盖
    公共无效onConfigurationChanged(配置NEWCONFIG){
        super.onConfigurationChanged(NEWCONFIG);
        //把任何配置更改抽屉toggls
        mDrawerToggle.onConfigurationChanged(NEWCONFIG);
    }}


解决方案

您与支持类混合新片段的支持类型。替换这些行:

 进口android.app.Fragment;
进口android.app.FragmentManager;

 进口android.support.v4.app.Fragment;
进口android.support.v4.app.FragmentManager;

然后扩展 android.support.v4.app.FragmentActivity 而不是活动并更改像<$ C调用$ C> getFragmentManager()与 getSupportFragmentManager(),同样的,你可能会使用其他方法。 (我没有通过所有code阅读。)

I have error in listfragment "The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, ListFragment)" what should i do? cause i can't appear my fragment

This my code :

import info.androidhive.slidingmenu.adapter.NavDrawerListAdapter;


import info.androidhive.slidingmenu.model.NavDrawerItem;

import java.util.ArrayList;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.ListFragment;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

public class MainActivity extends Activity {

    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), true, "22"));
        // 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), true, "50+"));


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


        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
                invalidateOptionsMenu();
            }

            public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle(mDrawerTitle);
                // calling onPrepareOptionsMenu() to hide action bar icons
                invalidateOptionsMenu();
            }
        };
        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) {
        // 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;
        ListFragment listfragment = null;

        switch (position) {
        case 0:
            fragment = new HomeFragment();
            break;
        case 1:
            fragment = new FindPeopleFragment();
            break;
        case 2:
            fragment = new PhotosFragment();
            break;
        case 3:
            listfragment = new ReviewFragment();
            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 if (listfragment != null) {
                // do stuff if its a listfragment
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction()
                        .replace(R.id.frame_container1, listfragment).commit();
            } 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);
    }

}

解决方案

You are mixing newer fragment support types with support classes. Replace these lines:

import android.app.Fragment;
import android.app.FragmentManager;

with:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;

Then extend android.support.v4.app.FragmentActivity instead of Activity and change calls like getFragmentManager() with getSupportFragmentManager() and similarly for other methods that you might be using. (I didn't read through all your code.)

这篇关于Android的错误 - 该方法替换型FragmentTransaction(INT,片段)是不适用的参数(INT,ListFragment)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆