【问题标题】:OnClick listener implementation not workingOnClick 侦听器实现不起作用
【发布时间】:2014-10-16 14:51:43
【问题描述】:

我通过实现OnClickListener 类来使用onClick() 方法。使用下面的代码,但它不起作用!没有错误,但它不起作用。当我单击按钮时,没有任何反应。怎么了?

package com.behnam.PhoneCh.main;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends Activity implements OnClickListener {

    EditText mainEt;
    TextView mainTv;
    Button   mainBtn;
    Button   mainBtn2;
    String   vaje;
    Javab    javab;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mainEt = (EditText) findViewById(R.id.editText1);
        mainTv = (TextView) findViewById(R.id.textView1);
        mainBtn = (Button) findViewById(R.id.button1);
        mainBtn2 = (Button) findViewById(R.id.button2);
        vaje = new String();
        javab = new Javab();
    }

    @Override
    public void onClick(View aaaaa) {
        switch (aaaaa.getId()) {

            case R.id.   Log.i("mylog", "start button1");
                vaje = mainEt.getText().toString();
                mainTv.setText(javab.startJ(vaje));
                break;
            case R.id.button2:             
                int c = 3;
                break;
        }
    }
}

【问题讨论】:

    标签: java android onclicklistener


    【解决方案1】:

    你永远不会在你的Buttons上设置你的听众

    mainBtn.setOnClickListener(this);
    

    您需要为要使用onClick() 的所有Buttons 添加此项。

    See this answer 用于处理onClick()的不同方式

    【讨论】:

      【解决方案2】:
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          mainEt = (EditText) findViewById(R.id.editText1);
          mainTv = (TextView) findViewById(R.id.textView1);
          mainBtn = (Button) findViewById(R.id.button1);
          mainBtn2 = (Button) findViewById(R.id.button2);
          mainBtn.setOnClickListener(this);
          mainBtn2.setOnClickListener(this); 
          vaje = new String();
          javab = new Javab();
      
      }
      
      
      @Override
      public void onClick(View aaaaa) {
          switch (aaaaa.getId()) {
      
              case R.id.button1;
                  Log.i("mylog", "start button1");
                  vaje = mainEt.getText().toString();
                  mainTv.setText(javab.startJ(vaje));
                  break;
              case R.id.button2:             
                  int c = 3;
                  break;
          }
      
      }
      

      使用上述代码更改您的onCreateonClick

      【讨论】:

        【解决方案3】:

        您需要将代码更改为:

        public class MainActivity extends Activity implements OnClickListener {
        
        EditText mainEt;
        TextView mainTv;
        Button   mainBtn;
        Button   mainBtn2;
        String   vaje;
        Javab    javab;
        
        
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            mainEt = (EditText) findViewById(R.id.editText1);
            mainTv = (TextView) findViewById(R.id.textView1);
            mainBtn = (Button) findViewById(R.id.button1);
            mainBtn2 = (Button) findViewById(R.id.button2);
            mainBtn.setOnClickListener(this);
            mainBtn2 .setOnClickListener(this);
            vaje = new String();
            javab = new Javab();
        
        }
        
        // And then you can use
        @Override
        public void onClick(View view) {
            switch (view.getId()) {
        
                case R.id.button1:
                    // Dome some stuff on click of button 1
                    break;
                case R.id.button2:             
                    // Dome some stuff on click of button 2
                    break;
            }
        
         }
        }
        

        【讨论】:

          【解决方案4】:

          试试这个:

          Button btMain = (Button)findViewById(R.id.button1);
          btMain.setOnClickListener(new OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      doStuff();
                  }
          });
          

          这是开始了解侦听器如何工作的最佳方式。

          【讨论】:

          • 如果你要说这是最好的方法,那么你至少应该解释一下为什么。有几种方法可以做到这一点,但我不确定您是否可以说有一种最好的方法。这取决于情况和开发人员。
          • 显然。你完全正确。但是,如果您开发一个 Android 应用程序,您通常会拥有多个视图/按钮。因此,带有非常案例的开关阅读/理解/实施起来很乏味。如果你是新手开发者,那就更难了。
          • 它没有解释为什么它是最好的方式
          猜你喜欢
          • 1970-01-01
          • 2017-12-26
          • 2020-08-17
          • 1970-01-01
          • 1970-01-01
          • 2022-01-14
          • 2013-12-07
          • 1970-01-01
          • 2017-09-27
          相关资源
          最近更新 更多