的OnClick监听器实现不工作

问题描述 投票:1回答:4

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

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
4个回答
4
投票

你永远不设置你的听众对你Buttons

mainBtn.setOnClickListener(this);

您将需要添加此对所有Buttons的,你要使用的onClick()

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


1
投票
@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;
    }

}

更改onCreate并与上面的代码onClick


0
投票

你需要改变你的代码:

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

 }
}

0
投票

试试这个:

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

这是开始了解听众是如何工作的最佳途径。

© www.soinside.com 2019 - 2024. All rights reserved.