类型View中的setOnClickListener(View.OnClickListener)不适用于参数(SequencerActivity)back.setOnClickListener(this);

时间:2011-05-20 12:20:13

标签: android

我想在按钮点击时显示图像,但我的代码中有三个错误。怎么了?

  1. class name "SequencerActivity"
    

    SequencerActivity类型必须实现继承的抽象方法DialogInterface.OnClickListener.onClick(DialogInterface, int)

  2. next.setOnClickListener(this);
    

    类型视图中的方法setOnClickListener(View.OnClickListener)不适用于参数(SequencerActivity)

  3. onClick(View v)
    
  4. 类型onClick(View)的方法SequencerActivity必须覆盖或实现超类型方法。

    以下是给出这些错误的代码:

    public class SequencerActivity extends Activity implements OnClickListener
    {
    private int imageCounter = 0;
    private ImageView imageLoader;
    
    private int[] imageList = {R.drawable.f03, R.drawable.f04, R.drawable.f05, R.drawable.f06};
    
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        setContentView(R.layout.main);//this one is the common parent layout for all image views
        super.onCreate(savedInstanceState);
    
        /*requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);*/
    
        //int image1 = R.drawable.image_w_lbl_0;
    
        imageLoader = (ImageView) findViewById(R.id.imageLoader);
        //imageLoader.setImageResource(image1);
    
        Button next = (Button) findViewById(R.id.next);
        Button back = (Button) findViewById(R.id.back);
        next.setOnClickListener(this);
        back.setOnClickListener(this);
        back.setEnabled(false);
        //show the default image
        this.loadImage(imageList[imageCounter]);
    
    }
    @Override
    public void onClick(View v) 
    {
        int imagePath = 0;
        // TODO Auto-generated method stub
        switch (v.getId())
        {
        case R.id.next:
            Log.i("Tag","tag");
            if(imageCounter < imageList.length)
            {
                imageCounter++;
                imagePath = imageList[imageCounter];
                if (imageCounter==(imageList.length)-1)
                {
                    { 
                        ImageButton next=(ImageButton)findViewById(R.id.next); 
                        next.setEnabled(false); 
                    }
                }
                else
                {
                    ImageButton back=(ImageButton)findViewById(R.id.back); 
                    back.setEnabled(true); 
                }
            }
            break;
        case R.id.back:
            if(imageCounter > 0)
            {
                imageCounter--;
                imagePath = imageList[imageCounter];
                if (imageCounter==0) 
                { 
                    ImageButton back=(ImageButton)findViewById(R.id.back); 
                    back.setEnabled(false); 
                }
                else
                {
                    ImageButton next=(ImageButton)findViewById(R.id.next); 
                    next.setEnabled(true);
                }
            }
            break;
        }
        this.loadImage(imagePath);
    
    }
    
    private void loadImage(int imagePath)
    {
        imageLoader.setImageResource(imagePath);
    
    }
    
    }
    

7 个答案:

答案 0 :(得分:41)

您实施的OnClickListener不正确, 尝试实现View.OnClickListener而不是DialogInterface.OnClickListener。

您可以在导入中看到

import View.OnClickListener

而不是

import DialogInterface.OnClickListener

答案 1 :(得分:14)

您需要导入import android.view.View.OnClickListener; 所以你的代码看起来像

import android.view.View.OnClickListener;
public class MainActivity extends Activity implements OnClickListener{
  // Your oncreate() and rest of all code
}
// you should have method as below
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    if(v.getId() == R.id.editText1) // just for instance 
    {
        .. your onclick handle code
    }
}

答案 2 :(得分:10)

仍然无法解决错误类型import View.OnClickListener;,然后将光标移到import View.OnClickListener;中的视图上它将打开弹出窗口,然后选择“组织导入”选项。

在顶部使用import View.OnClickListener;

答案 3 :(得分:3)

您正在实施的OnClickListener是错误的。它说它是DialogInterface.OnClickListener,而你可能想要View.OnClickListener。您可以在相应的import声明中更正该内容。

答案 4 :(得分:2)

只做一件事。在程序顶部使用“import android.view.View.OnClickListener”语句。

答案 5 :(得分:1)

做一件事

删除导入android.content.DialogInterface.OnClickListener; 和进口 的 android.View.View.OnClickListener

这将解决问题

快乐编码

答案 6 :(得分:0)

实施View.view.onClickListener