错误:类型不兼容:HomeFragment无法转换为上下文

布拉姆·维拉特玛:

我的Adapter代码上出现错误,这是我的代码,错误指向此代码,其on HomeFragment.java,其内容为:

错误:类型不兼容:HomeFragment无法转换为上下文

adapter = new Adapter(models,this);

这是我的HomeFragment.java

public class HomeFragment extends Fragment {

    //cardview
    ViewPager viewPager;
    Adapter adapter;
    List<Model> models;
    Integer[]colors = null;
    ArgbEvaluator argbEvaluator = new ArgbEvaluator();


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_home,container,false);

        //cardview
        models = new ArrayList<>();
        models.add(new Model(R.drawable.brochure,"Brochure","Lorem ipsum dolor sit amet"));
        models.add(new Model(R.drawable.sticker,"Sticker","Lorem ipsum dolor sit amet"));
       models.add(new Model(R.drawable.poster,"Poster","Lorem ipsum dolor sit amet"));
       models.add(new Model(R.drawable.namecard,"Name Card","Lorem ipsum dolor sit amet"));

        adapter = new Adapter(models,this);

        viewPager = getView().findViewById(R.id.viewPager);
        viewPager.setAdapter(adapter);
        viewPager.setPadding(130,0,130,0);
    }
}

然后这是我的Adapter.java

public class Adapter extends PagerAdapter {

    private List<Model> models;
    private LayoutInflater layoutInflater;
    private Context context;

    public Adapter(List<Model> models, Context context) {
        this.models = models;
        this.context = context;
    }

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

    @Override
    public boolean isViewFromObject(View view, @NonNull Object object) {
        return view.equals(object);
    }

    @NonNull
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        layoutInflater = LayoutInflater.from(context);
        View view = layoutInflater.inflate(R.layout.item,container,false);

        ImageView imageView;
        TextView title,desc;

        imageView = view.findViewById(R.id.image);
        title = view.findViewById(R.id.title);
        desc = view.findViewById(R.id.desc);

        imageView.setImageResource(models.get(position).getImage());
        title.setText(models.get(position).getTitle());
        desc.setText(models.get(position).getDesc());

        container.addView(view,0);
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View)object);
    }
}
Letsintegreat:

更改此:

adapter = new Adapter(models,this);

对此:

adapter = new Adapter(models, (Context) getActivity());

你必须通过Context并且a Activity可以强制转换为Contexta Fragment不是。

因此,您必须检索current的实例Activity,而我们正在执行该实例getActivity()

如果你想创建的实例AdapterActivity,那么你就可以做到这一点通过简单的传球this,就像我之前说的,一个Activity是铸造能够ContextFragment不是。因此Activity将被强制转换为Context,但是当您想要在中创建相同的对象时,Fragment您将无法简单地通过this,因此,它引发了错误。

正如您在评论中所说的那样,现在还有另一个错误,那是因为您已经return在该方法的第一行中编辑过某些内容,因此,该行下的每一行都将无法到达,这就是为什么会出现该错误,因此请将该行放置

return inflater.inflate(R.layout.fragment_home,container,false);

最后,错误将消失。

在对方法进行更多编辑之后,您OnCreateView将看起来像这样:

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    view = inflater.inflate(R.layout.fragment_home, container, false); // Created a instance of View which we can return later.

    //cardview
    models = new ArrayList<>();
    models.add(new Model(R.drawable.brochure,"Brochure","Lorem ipsum dolor sit amet"));
    models.add(new Model(R.drawable.sticker,"Sticker","Lorem ipsum dolor sit amet"));
    models.add(new Model(R.drawable.poster,"Poster","Lorem ipsum dolor sit amet"));
    models.add(new Model(R.drawable.namecard,"Name Card","Lorem ipsum dolor sit amet"));

    adapter = new Adapter(models,this);

    viewPager = view.findViewById(R.id.viewPager); // Change getView() to view here.
    viewPager.setAdapter(adapter);
    viewPager.setPadding(130,0,130,0);

    return view; // Returned the view.
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

错误:类型不兼容:MainFragment无法转换为Activity

不兼容的类型:无法在Android中将HomeFragment转换为Fragment

如何修复不兼容的类型:片段无法转换为上下文

错误:类型不兼容:String []无法转换为String

错误:类型不兼容:消息无法转换为int吗?

错误:类型不兼容:NewSubscription无法转换为上下文

片段无法转换为上下文

错误:(124,62)错误:类型不兼容:无法将类转换为上下文

将文件转换为Swift 3:无法在当前上下文中推断闭包类型

BlueJ错误:“不兼容的类型:无法将int转换为java.lang.String”和“不兼容的类型:java.lang.String无法被转换为int”

无法将上下文转换为活动Xamarin

List <Trail>无法转换为上下文

错误:类型不兼容:char无法转换为String

错误:类型不兼容:Task <Uri>无法转换为Uri

错误:类型不兼容:无法将对象转换为char

JAVAFX错误不兼容的类型:FXMLLoader无法转换为节点

错误:类型不兼容:“某物”无法转换为“某物”

错误:不兼容的类型:对象无法转换为 MyClass

错误:(28, 58) 错误:类型不兼容:对象无法转换为地址

上下文无法转换为 RecognitionListener

无法转换为上下文

上下文不更新类型的值

错误:不兼容的类型:int[][] 无法转换为 int

上下文无法转换为 Tab1Values

SAX 错误:类型不兼容:字符串无法转换为 InputSource

错误:不兼容的类型:<anonymous OnTabSelectedListener> 无法转换为 BaseOnTabSelectedListener

键路径值类型“Data.Element.ID”无法转换为上下文类型“ID”

错误:不兼容的类型:Intent 无法转换为 Intent[]

Swift:帮助解决'Key path value type '_'无法转换为上下文类型'_''