【问题标题】:android: how to fix error constructor CardPagerAdapter in class CardsActivity.CardPagerAdapter cannot be applied to given typesandroid:如何修复类 CardsActivity.CardPagerAdapter 中的错误构造函数 CardPagerAdapter 不能应用于给定类型
【发布时间】:2017-04-02 09:54:34
【问题描述】:

源码:https://github.com/jamesmccann/android-view-pager-cards/blob/master/app/src/main/java/nz/jamesmccann/cardviewpager/CardActivity.java 我下载了它,它不起作用,所以我复制到我的项目中。但是发生了一些错误,尽管我搜索了很多次,但我不知道如何解决。 这是 CarContainerFragment:

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

public class CardContainerFragment extends Fragment {

    private boolean cardFlipped = false;

    public CardContainerFragment() {
        setHasOptionsMenu(true);
    }

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

        getChildFragmentManager()
                .beginTransaction()
                .add(R.id.container, new CardFrontFragment())
                .commit();

        return rootView;
    }

    public void flipCard() {
        Fragment newFragment;
        if (cardFlipped) {
            newFragment = new CardFrontFragment();
        } else {
            newFragment = new CardBackFragment();
        }

        getChildFragmentManager()
                .beginTransaction()
                .setCustomAnimations(
                        R.anim.card_flip_right_in, R.anim.card_flip_right_out,
                        R.anim.card_flip_left_in, R.anim.card_flip_left_out)
                .replace(R.id.container, newFragment)
                .commit();

        cardFlipped = !cardFlipped;
    }

    public static class CardFrontFragment extends Fragment {

        public CardFrontFragment() {
        }

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

    public static class CardBackFragment extends Fragment {

        public CardBackFragment() {
        }

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

这是 CardsActivity:

    import android.app.Activity;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.app.FragmentPagerAdapter;


public class CardsActivity extends Activity {


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

        CardPagerAdapter adapter = new CardPagerAdapter(getFragmentManager());
        ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
        viewPager.setAdapter(adapter);
    }

    public class CardPagerAdapter extends FragmentPagerAdapter {

        public CardPagerAdapter(FragmentManager fragmentManager) {
            super(fragmentManager);
        }

        @Override
        public Fragment getItem(int position) {
            return new Fragment();
        }

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

这是我得到的错误:

  Error:(24, 36) error: constructor CardPagerAdapter in class CardsActivity.CardPagerAdapter cannot be applied to given types;
required: android.support.v4.app.FragmentManager
found: android.app.FragmentManager
reason: actual argument android.app.FragmentManager cannot be converted to android.support.v4.app.FragmentManager by method invocation conversion

【问题讨论】:

    标签: java android eclipse android-fragments import


    【解决方案1】:

    你的 CardsActivity 的导入与 github 链接上的不同。

    你的

    import android.app.Activity;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.os.Bundle;
    import android.support.v4.view.ViewPager;
    import android.support.v4.app.FragmentPagerAdapter;
    

    Github

    import android.app.Activity;
    import android.app.Fragment;
    import android.app.FragmentManager;
    import android.os.Bundle;
    import android.support.v4.view.ViewPager;
    

    在我看来,您应该使用getSupportFragmentManager() 而不是getFragmentManager()(您必须从android.support.v4.app.FragmentActivity 扩展而不是从Activity 扩展才能获得此方法)。

    【讨论】:

    猜你喜欢
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 2019-10-05
    • 2013-06-08
    相关资源
    最近更新 更多