View中的setOnClickListener(View.OnClickListener)方法不适用于参数(SequencerActivity),back.setOnClickListener(this);

25
我想在按钮点击时显示一张图片,但我的代码出现了三个错误。有什么问题吗?
class name "SequencerActivity"

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

next.setOnClickListener(this);

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

onClick(View v)

SequencerActivity 类中的 onClick(View) 方法必须覆盖或实现一个超类型方法。

以下是导致这些错误的代码:

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);

}

}

4
标记已回答,请。darune是完全正确的(至少在我的情况下)。 - sschrass
7个回答

41

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

您可以在导入中看到:

import View.OnClickListener

而不是

import DialogInterface.OnClickListener


谢谢,这让我很疯狂。 - magritte

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
    }
}

10

如果你仍然无法解决错误类型 import View.OnClickListener;,那么将光标移动到 import View.OnClickListener; 中的 View 上。它会弹出一个窗口,然后选择“组织导入”选项。

只需在顶部使用简单的 import View.OnClickListener;


3

您正在实现的OnClickListener是错误的。它说它是DialogInterface.OnClickListener,而您可能想要的是View.OnClickListener。您可以在相应的import语句中更正它。


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

1

做一件事情

移除 import android.content.DialogInterface.OnClickListener; 并导入 android.View.View.OnClickListener

这将解决问题

编码愉快


0

实现 View.view.onClickListener


在回答问题时,最好给出一些解释,说明为什么你的答案是正确的。参考链接 - Stephen Rauch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接