cannot be cast to androidx.fragment.app.Fragment

这个问题怎么改?

Main2Activity的

import androidx.annotation.NonNull;
import android.os.Handler;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;

import android.os.Bundle;

public class Main2Activity extends FragmentActivity {
    private int[] imgres = new int[]{R.drawable.g1,R.drawable.g2,R.drawable.g3};//广告条的图片资源
    private Handler mHandler = new Handler();
    private ViewPager mViewPager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_blank);
        mViewPager = findViewById(R.id.bannerviwepage);
        mViewPager.setAdapter(new mypageradpter(getSupportFragmentManager()));
        autoScroll();
    }
    //自动滚动
    private void autoScroll() {
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                //获取当前的页面下标
                int currentItem = mViewPager.getCurrentItem();
                mViewPager.setCurrentItem(currentItem+1);
                mHandler.postDelayed(this,2000);
            }
        }, 2000);


    }

    //广告条的适配器

    class mypageradpter extends FragmentPagerAdapter {

        public mypageradpter(@NonNull FragmentManager fm) {
            super(fm);
        }

        @NonNull
        @Override
        //返回fragment视图
        public Fragment getItem(int position) {
            position %= imgres.length;
            BannerFragment frangent = new BannerFragment();
            frangent.setImage(imgres[position]);
            return frangent;
        }

        @Override
        //
        public int getCount() {
            return 100000;
        }
    }
}

 

 

BannerFragment的

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;


/**
 * A simple {@link Fragment} subclass.
 */
public class BannerFragment extends Fragment {
public int ingres;
    public BannerFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
       View inflate=inflater.inflate(R.layout.fragment_banner3,container,false);
       ImageView iv_banner=inflate.findViewById(R.id.iv_banner);
        iv_banner.setImageResource(ingres);
        return inflate;



    }
    public void setImage(int ingres){
       this.ingres=ingres;
    }
}

首先你的代码没有问题,因为我已经成功的运行了你的代码。

从错误日志上分析,就是当前的Activity 无法转变成AndroidX 下的FragmentActivity。

个人觉得你当前的Activity 应该是support包的而并不是AndroidX下的。 建议你查看一下gradle文件。

是这个吗 该改什么么?