[英]Android - Wrong 1st argument type and ' android.supportv4.app.Fragment'
I'm creating a Material design tab view.我正在创建一个材料设计选项卡视图。 I'm getting an error after addFragment method on my Main Activity.
在我的主活动中使用 addFragment 方法后出现错误。 This is the error that I'm getting.
这是我得到的错误。
Wrong 1st argument type. Found: 'com.example.sa.tabproject.LatestPromoFragment, ' android.supportv4.app.Fragment'
My MainActivity.java我的 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"); // new LatestPromoFragment() should be in getItem() otherwise it will cause crashes
viewPagerAdapter.addFragment(new MapViewFragment(),"Map View"); // new MapViewFragment() should be in getItem() otherwise it will cause crashes
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
}}
ViewPagerAdapter.java 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<>(); // this line can cause crashes
ArrayList<String> tabTitles= new ArrayList<>();
public void addFragment(Fragment fragment,String titles){
this.fragment.add(fragment); // this line can cause crashes
this.tabTitles.add(titles);
}
public ViewPagerAdapter(FragmentManager fm){
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragment.get(position); // this should create the Fragment instances
}
@Override
public int getCount() {
return fragment.size();
}
@Override
public CharSequence getPageTitle(int position) {
return tabTitles.get(position);
}}
I imported several fragment classes to the MainActivity.java.我将几个片段类导入到 MainActivity.java。 But it doesn't fix the error.
但它不能修复错误。
This is because in adapter class you are using support fragment ie import android.support.v4.app.Fragment;这是因为在适配器类中您正在使用支持片段,即导入 android.support.v4.app.Fragment; and in Activity class you are using app fragment import android.app.Fragment;
在 Activity 类中,您正在使用 app fragment import android.app.Fragment;
use same type of fragment every where it will work.在每个可以工作的地方使用相同类型的片段。
If you use android.support.v4.app.FragmentPagerAdapter
, you must also use android.support.v4.app.Fragment
for all Fragments.如果您使用
android.support.v4.app.FragmentPagerAdapter
,您还必须为所有 Fragment 使用android.support.v4.app.Fragment
。
If you want to use android.app.Fragment
native Fragments with a FragmentPagerAdapter or FragmentStatePagerAdapter, you need to use the v13 support library versions of the adapter, ie android.support.v13.app.FragmentPagerAdapter
.如果您想使用带有 FragmentPagerAdapter 或 FragmentStatePagerAdapter 的
android.app.Fragment
原生 Fragment,则需要使用适配器的 v13 支持库版本,即android.support.v13.app.FragmentPagerAdapter
。
You can see this in the documentation if you look at the getItem() for each:如果您查看每个的 getItem() ,您可以在文档中看到这一点:
V4: http://developer.android.com/intl/en/reference/android/support/v4/app/FragmentPagerAdapter.html#getItem(int) 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) V13: http : //developer.android.com/intl/en/reference/android/support/v13/app/FragmentPagerAdapter.html#getItem(int)
Replace your import android.app.Fragment;
替换你的
import android.app.Fragment;
code代码
with与
import android.support.v4.app.Fragment;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.