当前位置: 首页 > 面试题库 >

“类已定义”错误

羊舌高峰
2023-03-14
问题内容

我有listview应用程序探索城市,每一行都指向不同的城市,在每个城市活动中,单击打开新活动时都包含按钮,这是无限画廊包含该城市的图片,我将无限画廊添加到第一个城市并可以正常工作,当我想html" target="_blank">添加时它到了第二个城市,在班上给了我红色标记错误,如下所示:

1-已经定义了InfiniteGalleryAdapter类型。

2-已经定义了InfiniteGallery类型。

我试图以相同的结果更改类名,删除R.java并用eclipse重建具有相同的结果。另外,我从项目属性中取消选中Java生成器,并得到相同的红色标记错误。

请任何帮助和建议将不胜感激

谢谢

我的代码:

public class SecondCity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
        // Set the layout to use
        setContentView(R.layout.main);
        if (customTitleSupported) {
            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.custom_title); 
            TextView tv = (TextView) findViewById(R.id.tv); 
            Typeface face=Typeface.createFromAsset(getAssets(),"BFantezy.ttf");     
            tv.setTypeface(face);
            tv.setText("MY PICTURES"); 
        }

        InfiniteGallery galleryOne = (InfiniteGallery) findViewById(R.id.galleryOne);
        galleryOne.setAdapter(new InfiniteGalleryAdapter(this));     
    }
}


class InfiniteGalleryAdapter extends BaseAdapter { 
    **//red mark here (InfiniteGalleryAdapter)** 
    private Context mContext;

    public InfiniteGalleryAdapter(Context c, int[] imageIds) { 
        this.mContext = c;
    }

    public int getCount() { 
        return Integer.MAX_VALUE;
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) { 
        return position;
    }

    private LayoutInflater inflater=null;
    public InfiniteGalleryAdapter(Context a) { 
        this.mContext = a; 
        inflater = (LayoutInflater)mContext.getSystemService ( Context.LAYOUT_INFLATER_SERVICE)
    }

    public class ViewHolder{ 
        public TextView text; 
        public ImageView image;
    }

    private int[] images = {
        R.drawable.pic_1, R.drawable.pic_2, 
        R.drawable.pic_3, R.drawable.pic_4, 
        R.drawable.pic_5
    };

    private String[] name = {
        "This is first picture (1) " ,
        "This is second picture (2)",
        "This is third picture (3)", 
        "This is fourth picture (4)",
        " This is fifth picture (5)"
    };

    public View getView(int position, View convertView, ViewGroup parent) { 
        ImageView i = getImageView();

        int itemPos = (position % images.length);

        try {
            i.setImageResource(images[itemPos]); ((BitmapDrawable) i.getDrawable()).
            setAntiAlias  (true);
        }

        catch (OutOfMemoryError e) {
            Log.e("InfiniteGalleryAdapter", "Out of memory creating imageview. Using empty view.", e);
        }

        View vi=convertView; 
        ViewHolder holder; 
        if(convertView==null){ 
            vi = inflater.inflate(R.layout.gallery_items, null); 
            holder=new ViewHolder(); holder.text=(TextView)vi.findViewById(R.id.textView1); 
            holder.image=(ImageView)vi.findViewById(R.id.image); 
            vi.setTag(holder);
        } else {
            holder=(ViewHolder)vi.getTag();
        } 
        holder.text.setText(name[itemPos]);

        final int stub_id=images[itemPos]; 
        holder.image.setImageResource(stub_id);

        return vi;
    }

    private ImageView getImageView() {

        ImageView i = new ImageView(mContext);

        return i;
    } 
}

class InfiniteGallery extends Gallery {
    **//red mark here (InfiniteGallery)**

    public InfiniteGallery(Context context) {
        super(context);
        init();
    }

    public InfiniteGallery(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public InfiniteGallery(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    private void init(){
        // These are just to make it look pretty
        setSpacing(25);
        setHorizontalFadingEdgeEnabled(false);
    }

    public void setResourceImages(int[] name){
        setAdapter(new InfiniteGalleryAdapter(getContext(), name));
        setSelection((getCount() / 2));
    }
}

问题答案:

您将获得这些红色标记,因为这些类已在您先前的一个类中定义。Java不允许使用重复的名称。而且似乎您正在尝试为每个Actvitiy定义相同的类,这是多余的。

只需从SecondActivity
Java文件中完全删除这两个类,因为它们在上一个活动中已经定义。我建议您制作一个单独的程序包,在该程序包中定义Adapter和InfiniteGallery并保持重用。

public class SecondCity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
        // Set the layout to use
        setContentView(R.layout.main);
        if (customTitleSupported) {
            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.custom_title); 
            TextView tv = (TextView) findViewById(R.id.tv); 
            Typeface face=Typeface.createFromAsset(getAssets(),"BFantezy.ttf");     
            tv.setTypeface(face);
            tv.setText("MY PICTURES"); 
        }

        InfiniteGallery galleryOne = (InfiniteGallery) findViewById(R.id.galleryOne);
        galleryOne.setAdapter(new InfiniteGalleryAdapter(this));     
    }
}


 类似资料:
  • 本文向大家介绍Rust 自定义错误类型,包括了Rust 自定义错误类型的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 我是编程新手,很难弄清楚这个错误: 这是整个程序。我敢肯定答案是非常简单的,但对于我的一生,我无法弄清楚。 问题答案: 该变量已被定义为循环的一部分。只需删除以下行:

  • 问题内容: 我希望在下面的代码中调用newTarget.a()和newTarget.b()时应用调制后的ASM类,以便它看起来像这样 当调用应用了修改的ASM类的newTarget.a()和newTarget.b()时,如何获得以下结果? 码: 想要结果: 第一种方法 第二种方法 转换方法 第一种方法 转换方法 第二种方法 问题答案: 您正在寻找Java API 。它要求您通过参数附加Java代理

  • 当我执行一个web客户端请求(到一个外部api)并且响应是4xx或5xx代码时,我遇到了一个问题。建议处理该响应并使用自定义类检索响应 Web客户端配置是 处理过滤器.class MyExpcetion.class 但是我的客户回复总是给我一个默认格式 代替 怎么了?谢谢

  • 我正在使用AnyLogic 8 University 8.7.0版本并进行基于代理的建模。我已经创建了一个汽车代理资源库,我想将汽车的初始位置(GISPoints)存储在一个变量中。使用该装置。getHomeLocation()方法给了我一个错误:“类型Auto的方法getHomeLocation()未定义”。这里,“unit”是Auto类型的ResourcePool单元的名称。 任何解决方法都会

  • 我想把一组复杂的xsd文件转换成Java/Hibernate实体。为此,我从这个链接下载了JAXB的2.2.7版本。解压文件,打开cmd.exe,导航到create-marshal示例的目录,运行ant compile以确认一切正常,然后运行ant clean以消除结果,将一切返回到启动条件。 当我试图使用不同的xsd文件作为create-marshal示例的输入时,问题出现了。具体地说,当xsd