Android - 错误的第一个参数类型和' android.supportv4.app.Fragment'

时间:2016-04-09 05:11:12

标签: java android android-fragments

我正在创建一个Material Design标签视图。我在主要活动上添加addFragment方法后出现错误。这是我得到的错误。

Wrong 1st argument type. Found: 'com.example.sa.tabproject.LatestPromoFragment, ' android.supportv4.app.Fragment'

我的MainActivity.java

import android.app.Activity;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v7.widget.Toolbar;
import android.app.Fragment;

public class MainActivity extends AppCompatActivity {
Toolbar toolbar;
TabLayout tabLayout;
ViewPager viewPager;
ViewPagerAdapter viewPagerAdapter;

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

    toolbar=(Toolbar)findViewById(R.id.toolBar);
    setSupportActionBar(toolbar);

    tabLayout=(TabLayout)findViewById(R.id.tab_layout);

    viewPager = (ViewPager) findViewById(R.id.viewPager);

    viewPagerAdapter= new ViewPagerAdapter(getSupportFragmentManager());


    viewPagerAdapter.addFragment(new LatestPromoFragment(),"Latest Promos");
    viewPagerAdapter.addFragment(new MapViewFragment(),"Map View");
    viewPager.setAdapter(viewPagerAdapter);
    tabLayout.setupWithViewPager(viewPager);

}}

ViewPagerAdapter.java

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
import java.util.List;

public class ViewPagerAdapter extends FragmentPagerAdapter {
ArrayList<Fragment> fragment = new ArrayList<>();
ArrayList<String> tabTitles= new ArrayList<>();


public void addFragment(Fragment fragment,String titles){
    this.fragment.add(fragment);
    this.tabTitles.add(titles);

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

}

@Override
public Fragment getItem(int position) {
    return fragment.get(position);
}

@Override
public int getCount() {
    return fragment.size();
}

@Override
public CharSequence getPageTitle(int position) {
    return tabTitles.get(position);
}}

我将几个片段类导入MainActivity.java。但它并没有解决错误。

3 个答案:

答案 0 :(得分:3)

这是因为在适配器类中你使用的是支持片段,即import android.support.v4.app.Fragment;在Activity类中,您正在使用app fragment import android.app.Fragment;

每个地方使用相同类型的片段。

答案 1 :(得分:1)

如果您使用android.support.v4.app.FragmentPagerAdapter,则还必须对所有片段使用android.support.v4.app.Fragment

如果要将android.app.Fragment本机片段与FragmentPagerAdapter或FragmentStatePagerAdapter一起使用,则需要使用适配器的v13支持库版本,即android.support.v13.app.FragmentPagerAdapter

如果你看一下每个的getItem(),你可以在文档中看到这个:

V4: http://developer.android.com/intl/en/reference/android/support/v4/app/FragmentPagerAdapter.html#getItem(int)

V13: http://developer.android.com/intl/en/reference/android/support/v13/app/FragmentPagerAdapter.html#getItem(int)

答案 2 :(得分:0)

替换您的import android.app.Fragment;代码

import android.support.v4.app.Fragment;