Click事件不起作用,甚至不显示任何错误

时间:2014-04-10 09:54:09

标签: android onclicklistener buttonclick

我想对点击btnSum(按钮)的编辑文本中收集值的两个数字进行求和。但当我按下按钮时没有任何反应,我甚至没有任何错误。

   public class MainActivity extends ActionBarActivity {
    Button btnsum,btnclear;
    EditText etno1,etno2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnsum=(Button)findViewById(R.id.editText1);
        btnclear=(Button)findViewById(R.id.editText2);
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
        try
        {
            btnsum.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if(arg0==btnclear)
                {
                    finish();
                }
                else
                {
    float no1 = Float.parseFloat( etno1.getText().toString());
    float no2 = Float.parseFloat( etno2.getText().toString());
    etno1.setText(Float.toString(no1+no2));
    }       
    }
        });
        }
        catch(Exception e)
        {

        }
    }

4 个答案:

答案 0 :(得分:0)

试试这个..

你还没有初始化EditText etno1 etno2 。它应该崩溃你正在使用try catch所以'不要强迫关闭。而且你还没有使用e.printStackTrace();,因此在logcat中不会打印错误。

尝试初始化如下

btnsum=(Button)findViewById(R.id.button1);
btnclear=(Button)findViewById(R.id.button2);

etno1=(EditText)findViewById(R.id.editText1);
etno2=(EditText)findViewById(R.id.editText2);

答案 1 :(得分:0)

findViewById中,buttons与布局xml的edittext个ID匹配,因此需要先修复它:

 ***Button*** btnsum,btnclear;
    ***EditText*** etno1,etno2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnsum=(***Button***)findViewById***(R.id.editText1***);
        btnclear=(Button)findViewById(R.id.editText2);

它没有崩溃:

 try
        {
            btnsum.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if(arg0==btnclear)
                {  

整个代码位于try catch

没有任何事情发生,因为:
 在onClickListener的{​​{1}}内,您将btnsum参数与view匹配

答案 2 :(得分:0)

您已在代码中执行此操作:

btnsum=(Button)findViewById(R.id.editText1);
btnclear=(Button)findViewById(R.id.editText2);

我觉得它应该是:

btnsum=(Button)findViewById(R.id.button1);
btnclear=(Button)findViewById(R.id.button2);

editText1=(EditText)findViewById(R.id.editText1);
editText2=(EditText)findViewById(R.id.editText2);

正确初始化资源....

对于OnClickListener,它应该是这样的

OnClickListener sumListener =  new OnClickListener() {

        @Override
        public void onClick(View v) {
            //Your summation code goes here
        }
    };
    btnSum.setOnClickListener(sumListener);

同样适用于btnClear

    OnClickListener clearBtnListner =  new OnClickListener() {

        @Override
        public void onClick(View v) {
            //Clear code goes here
        }
    };
    btnClear.setOnClickListener(clearBtnListner);   

答案 3 :(得分:0)

Please Intialize edit text

public class MainActivity extends ActionBarActivity {
    Button btnsum,btnclear;
    EditText etno1,etno2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnsum=(Button)findViewById(R.id.editText1);
        btnclear=(Button)findViewById(R.id.editText2);
etno1=(EditText)findViewById(R.id.edittext1);//**edittext1 name your edit text**
etno2=(EditText)findViewById(R.id.edittext2);//**edittext2 name your edit text****
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
        try
        {
            btnsum.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if(arg0==btnclear)
                {
                    finish();
                }
                else
                {
    float no1 = Float.parseFloat( etno1.getText().toString());
    float no2 = Float.parseFloat( etno2.getText().toString());
    etno1.setText(Float.toString(no1+no2));
    }       
    }
        });
        }
        catch(Exception e)
        {

        }
    }