2014-12-06 51 views
0

在我的应用程序中,我有一个3按钮的简单活动,为了不为每个按钮设置单独的OnClickListener,我决定在我的活动中实现它,但它不起作用。如何在活动中实现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方法停车时调试我的应用程序。

+0

发布您的布局xml文件,即activity_main.xml – Amy 2014-12-06 11:26:59

回答

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

您需要findViewbyId您的按钮和setOnClickListener他们。

例子:

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

重写的onClick()是正确的,你的MainActivity正确实现OnClickListener。

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

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

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

创建Button对象uning 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); 
1

您需要声明ButtonsetOnClickListener

@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); 
    } 
相关问题