Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 错误的第一个参数类型_Java_Android - Fatal编程技术网

Java 错误的第一个参数类型

Java 错误的第一个参数类型,java,android,Java,Android,这是我进口的样品 import android.support.design.widget.FloatingActionButton; import android.support.design.widget.NavigationView; import android.support.design.widget.Snackbar; import android.support.design.widget.TabLayout; import android.support.v4.app.Frag

这是我进口的样品

import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.NavigationView;
import android.support.design.widget.Snackbar;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
这就是我使用片段的地方

private void SetUpViewPager(ViewPager viewpager) {
    /*Creating a tab adapter*/
    TabAdapter adapter = new TabAdapter(getSupportFragmentManager());
    adapter.AddFragment(new Fragment1(),"Activity");
    adapter.AddFragment(new Fragment2(),"Friends");
    adapter.AddFragment(new Fragment3(),"Inbox");

    /*Set the adapter to the view pager property*/
    viewpager.setAdapter(adapter);
}
我得到一个错误的第一个参数发现碎片1必需碎片2

下面是适配器类 我不确定问题出在哪里
在代码中
在下面 私有类TabAdapter扩展了FragmentPagerAdapter{

    private ArrayList<Fragment> Fragments;
    ArrayList<String> FragmentNames;

    /*Constructor*/
    TabAdapter(FragmentManager fm) {
        super(fm);
        Fragments = new ArrayList<>();
        FragmentNames = new ArrayList<>();
    }

    /*Helper method which adds a fragment which in turn adds a tab*/
    void AddFragment(Fragment1 fragment, String name) {
        Fragments.add(fragment);
        FragmentNames.add(name);
    }

    /*Get the current item of the tab its on*/
    @Override
    public Fragment getItem(int position) {
        return Fragments.get(position);
    }

    /*Returns the number of fragments that are in this adapter*/
    @Override
    public int getCount() {
        return Fragments.size();//Check on This
    }

    @Override
    public CharSequence getPageTitle(int position)
    {
        return FragmentNames.get(position);
    }
}
私有数组列表片段;
ArrayList片段名称;
/*建造师*/
TabAdapter(碎片管理器fm){
超级(fm);
片段=新的ArrayList();
FragmentNames=新的ArrayList();
}
/*Helper方法,该方法添加一个片段,该片段又添加一个选项卡*/
void AddFragment(Fragment1片段,字符串名称){
片段。添加(片段);
碎片名称。添加(名称);
}
/*获取其上选项卡的当前项*/
@凌驾
公共片段getItem(int位置){
返回碎片。获取(位置);
}
/*返回此适配器中的片段数*/
@凌驾
public int getCount(){
返回片段。size();//检查此
}
@凌驾
公共字符序列getPageTitle(int位置)
{
返回碎片名称。获取(位置);
}
}
AddFragment()应将Fragment1作为第一个参数。因此,错误是显而易见的

/*Helper method which adds a fragment which in turn adds a tab*/
void AddFragment(Fragment1 fragment, String name) {
    Fragments.add(fragment);
    FragmentNames.add(name);
}
如果要使方法接受多个类,那么有两个选项

  • AddFragment()
    接受
    Fragment
    作为第一个参数

    addFragment(片段片段,字符串名称)

  • 声明一个接口,使您的类符合该接口,并使用该接口作为参数

  • FragmentInterface.java Fragment1.java TabAdapter.java
    您能否显示实际的错误消息,可能有助于查看更多信息。是否用于AddFragment调用?该方法是如何声明的?请给出TapAdapter@algrid这就是密码。我只在addFragment方法下得到一条红线,先说错话Argument@algrid来看看我是如何实现它的
    public interface FragmentInterface{
        // You can declare common functionalities here
    }
    
    public class Fragment1 extends Fragment implements FragmentInterface {
        // Class implementation
    }
    
    /*Helper method which adds a fragment which in turn adds a tab*/
    void AddFragment(FragmentInterface fragment, String name) {
        Fragments.add(fragment);
        FragmentNames.add(name);
    }