Hiroyuan 2023-03-11 08:49 采纳率: 100%
浏览 10
已结题

关于#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行

展开全部

  • 写回答

3条回答 默认 最新

  • MarkHan_ 2023-03-11 09:07
    关注

    该回答引用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的实例,解决该问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月11日
  • 修改了问题 3月11日
  • 创建了问题 3月11日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部