2014-12-06 3 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-файл i.e. activity_main.xml – Amy

ответ

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 findViewbyId и setOnClickListener к этому объекту

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

Вы должны объявить 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); 
    } 
Смежные вопросы