关于#Main#的问题,如何解决?

'com.example.radiobutton.MainActivity' 不是封闭类

import androidx.appcompat.app.AppCompatActivity;

public class gallery extends AppCompatActivity
{

    private ImageSwitcher imageSwitcher;
    Gallery gallery;
    private  int[] imgs ={
            R.drawable.a,
            R.drawable.b,
            R.drawable.c,
            R.drawable.d,
            R.drawable.e,
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gallery);
        imageSwitcher = findViewById(R.id.imageSwithcer01);
        imageSwitcher.setFactory(new viewFactory());
        imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));
        imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));
        imageSwitcher.setImageResource(R.drawable.a);
        gallery = findViewById(R.id.Gallery01);
        gallery.setOnItemSelectedListener(new onItemSelectedListener());
        gallery.setSpacing(10);
        gallery.setAdapter(new baseAdapter());
    }
    class viewFactory implements ViewSwitcher.ViewFactory {
        @Override
        public View makeView()
        {
            ImageView imageView = new ImageView(**MainActivity.this**);
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            return imageView;
        }

    }
    class onItemSelectedListener implements AdapterView.OnItemSelectedListener{
        @Override
        public void onItemSelected(AdapterView<?> parent,View view,int position,long id){
            imageSwitcher.setImageResource((int) gallery.getItemIdAtPosition(position));
        }
        @Override
        public void onNothingSelected(AdapterView<?> arg0){}
    }
    class baseAdapter extends BaseAdapter
    {
        public int getCount()
        {
            return imgs.length;
        }
        public Object getItem(int position)
        {
            return null;
        }
        public long getItemId(int position)
        {
            return imgs[position];
        }
        public View getView(int position, View converView, ViewGroup parent){
            ImageView imageView = new ImageView(**MainActivity.this**);
            imageView.setImageResource(imgs[position]);
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            imageView.setLayoutParams(new Gallery.LayoutParams(60,60));
            return imageView;
        }

    }
}



加粗代码处就是问题出现位置,我的java基础不是很牢,求救助
问题出在第33,62行

该回答引用GPTᴼᴾᴱᴺᴬᴵ
问题出在代码中使用了错误的类名来引用MainActivity.this。因为你的Activity名称是“gallery”,而不是“MainActivity”,所以在第33和62行中应该使用“gallery.this”来引用当前Activity的实例,而不是“MainActivity.this”。

因此,你应该将第33行和第62行中的代码从:

ImageView imageView = new ImageView(MainActivity.this);


修改为:

ImageView imageView = new ImageView(gallery.this);


这样就可以正确地引用当前Activity的实例,解决该问题。

ImageView imageView = new ImageView(MainActivity.this);

试一下更改为

ImageView imageView = new ImageView(getApplicationContext());