【问题标题】:setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (SequencerActivity) back.setOnClickListener(this);View 类型中的 setOnClickListener(View.OnClickListener) 不适用于参数 (SequencerActivity) back.setOnClickListener(this);
【发布时间】:2018-02-09 13:16:00
【问题描述】:

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

  1. class name "SequencerActivity"
    

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

  2. next.setOnClickListener(this);
    

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

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

}

}

【问题讨论】:

  • 请标记回答。 darune 是完全正确的(至少在我的情况下)

标签: android


【解决方案1】:

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

你可以在你的导入中看到

import View.OnClickListener

而不是

import DialogInterface.OnClickListener

【讨论】:

  • 谢谢,这让我发疯了。
【解决方案2】:

你需要导入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
    }
}

【讨论】:

    【解决方案3】:

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

    在顶部简单地使用import View.OnClickListener;。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          做一件事

          删除导入android.content.DialogInterface.OnClickListener; 并导入 android.View.View.OnClickListener

          这样就可以解决问题了

          快乐编码

          【讨论】:

            【解决方案7】:

            实现 View.view.onClickListener

            【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-09-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多