如何在活动中实现OnClickListener?

时间:2014-12-06 11:24:53

标签: android onclicklistener

在我的应用程序中,我有一个带有3个按钮的简单活动,并且没有为每个按钮设置单独的OnClickListener,我决定在我的活动中实现它,但它不起作用。

这是我的代码

public class MainActivity extends Activity implements View.OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    private void CheckForViolations(){

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btnCheck:
                CheckForViolations();
                break;
            case R.id.btnViewAllViolations:
                Intent violationListIntent = new Intent(MainActivity.this,ViolationListActivity.class);
                startActivity(violationListIntent);
                break;
            case R.id.btnSettings:
                Intent settingsIntent = new Intent(MainActivity.this, ViolationListActivity.class);
                startActivity(settingsIntent);
                break;
        }
    }
}

我错过了什么,因为当我调试我的应用程序时,程序甚至没有停在onClick方法中。

5 个答案:

答案 0 :(得分:2)

覆盖onClick()是正确的,您的MainActivity正确实现了OnClickListener。

您只需要注册每个按钮。例如:

Button goButton = (Button) findViewById(R.id.buttonGo);
goButton.setOnClickListener(this);

答案 1 :(得分:1)

您必须将视图的侦听器设置为活动。所以,它应该是这样的:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    View btnCheck = findViewById(R.id.btnCheck);
    btnCheck.setOnClickListener(this);
    View btnViewAllViolations = findViewById(R.id.btnViewAllViolations);
    btnViewAllViolations.setOnClickListener(this);
    View btnSettings = findViewById(R.id.btnSettings);
    btnSettings.setOnClickListener(this);
}

答案 2 :(得分:1)

您需要findViewbyId按钮和setOnClickListener

示例:

btnCheck = (Button) findViewById(R.id.btnCheck);
btnCheck.setOnClickListener(this);

答案 3 :(得分:1)

最后在onCreate方法中添加以下行。

为该对象创建Button对象取消findViewbyIdsetOnClickListener

Button b1 = (Button) findViewById(R.id.btnCheck); 
Button b2 = (Button) findViewById(R.id.btnViewAllViolations); 
Button b3 = (Button) findViewById(R.id.btnSettings); 

b1 .setOnClickListener(this);
b2 .setOnClickListener(this);
b3 .setOnClickListener(this);

答案 4 :(得分:1)

您需要将Button声明为setOnClickListener

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btnCheck=(Button)findViewById(R.id.btnCheck1);
        Button btnViewAllViolations=(Button)findViewById(R.id.btnViewAllViolations1);
        Button btnSettings=(Button)findViewById(R.id.btnSettings1);

       //Where btnCheck1,btnViewAllViolations1,btnSettings1 are ids in xml;

       btnCheck.setOnClickListener(this);
       btnViewAllViolations.setOnClickListener(this);
       btnSettings.setOnClickListener(this);
    }