2016-11-18 2 views
0

Исходный код: https://github.com/jamesmccann/android-view-pager-cards/blob/master/app/src/main/java/nz/jamesmccann/cardviewpager/CardActivity.java Я загрузил его, и он не сработал, поэтому я скопировал его в свой проект. но произошла некоторая ошибка, и я не знаю, как исправить, хотя я много раз искал. Это CarContainerFragment:android: как исправить конструктор ошибок CardPagerAdapter в классе CardsActivity.CardPagerAdapter не может применяться к заданным типам

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 

ответ

0

Ваш 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 получить этот метод) ,

+0

Я не вижу getSupportFragmentManager() хотя я добавил android.support.v4.app.FragmentActivity. – Alice

+0

Здесь https://developer.android.com/reference/android/support/v4/app/FragmentActivity.html#getSupportFragmentManager() просто расширяет ваш класс активности 'public class CardsActivity extends FragmentActivity {' – pleft

+0

Большое спасибо! ! Это сработало. – Alice