首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onClickListener故障

onClickListener故障
EN

Stack Overflow用户
提问于 2020-10-16 03:44:01
回答 3查看 459关注 0票数 0

所以,我正在我的手机上学习和开发一个带有Android助手的小应用程序,我有这样的代码:

代码语言:javascript
复制
package com.mycompany.myapp;
import android.app.*;
import android.os.*;
import android.widget.EditText;
import android.widget.Button;
import android.widget.Toast;
import android.view.View;

public class MainActivity extends Activity {

    EditText edit1;
    Button btn1;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        edit1 = (EditText) findViewById(R.id.edit1);
        btn1 = (Button) findViewById(R.id.btn1);
        btn1.setOnClickListener(this);
  //Problem (this) from AIDE error info: Method 
   'android.view.View.setOnClickListener(android.view.View.OnClickListener)' in 'android.widget.Button' can not be applied to    '(com.mycompany.myapp.MainActivity)'//
    }
    
    public void OnClick(View v) {
        switch (v.getId()){
            case R.id.btn1:
                Toast.makeText(getApplicationContext(),edit1.getText().toString(),Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
                
        }
    }


}

有什么问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-10-16 04:06:20

您的活动必须实现View.OnClickListener接口。

代码语言:javascript
复制
    public class MainActivity extends Activity implements View.OnClickListener {
        @Override
        public void onClick(View view) {}
    }
票数 4
EN

Stack Overflow用户

发布于 2020-10-16 04:10:13

你知道this指的是什么,不是吗?这是对您的活动的引用,但是setOnClickListener()采用View.OnClickListener类型的参数,而不是您的活动。

查看官方医生中的示例代码

代码语言:javascript
复制
     final Button button = findViewById(R.id.button_id);
     button.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             // Code here executes on main thread after user presses button
         }
     });

使用new View.OnClickListener()创建匿名内部类时,该匿名类实现OnClick接口。

如果您只是在您的View.OnClickListener上实现MainActivity,您就必须改变处理事件的方式,我想您希望最小化重构的数量。

票数 2
EN

Stack Overflow用户

发布于 2020-10-16 06:48:30

本代码正在运行(测试)

代码语言:javascript
复制
package com.mycompany.myapp;
import android.app.*;
import android.os.*;
import android.widget.EditText;
import android.widget.Button;
import android.widget.Toast;
import android.view.View;

     public class MainActivity extends Activity implements View.OnClickListener{
            EditText edit12;
            Button btn12;  
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                
                edit12 = (EditText) findViewById(R.id.edit1);
                btn12 = (Button) findViewById(R.id.btn1);
                btn12.setOnClickListener();
            }
           
             public void onClick(View v){
                switch (v.getId()){
                    case R.id.btn12:
                        Toast.makeText(getApplicationContext(),edit1.getText().toString(),Toast.LENGTH_SHORT).show();
                        break;
                    default:
                        break;                    
                }
            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64382636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档