Nasłuchiwacze 1. Podstawowy sposób ustawiania nasłuchiwaczy - klasa anonimowa inline: W metodzie MainActivity.onCreate: public class MainActivity extends AppCompatActivity { private Button przycisk; ... protected void onCreate(Bundle savedInstanceState) { przycisk = (Button)findViewById(R.id.button1); przycisk.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { przycisk.setText("Brawo!"); } }); } } * View.OnClickListener to interfejs deklarujący jedną metodę: public void onClick(View v) 2. Klasa anonimowa implementująca interfejs View.OnClickListener (sposób używany w tej chwili): W klasie MainActivity: public class MainActivity extends AppCompatActivity { private Button przycisk; ... private View.OnClickListener przyciskListener = new View.OnClickListener() { public void onClick(View v) { przycisk.setText("Brawo!"); } }; @Override protected void onCreate(Bundle savedInstanceState) { ... przycisk = (Button)findViewById(R.id.button1); przycisk.setOnClickListener(przyciskListener); ... ); } } 3. Implementacja interfejsu View.OnClickListener przez MainActivity (nie podoba mi się): public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button przycisk; public void onClick(View v) { przycisk.setText("Brawo!"); } @Override protected void onCreate(Bundle savedInstanceState) { ... przycisk = (Button)findViewById(R.id.button1); przycisk.setOnClickListener(this); ... } } 4. Własna metoda wywoływana z onClick: public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button przycisk; public void onClick(View v) { if(v == przycisk) przycisk_onClick(v); } public void przycisk_onClick(View v) { przycisk.setText("Brawo!"); } @Override protected void onCreate(Bundle savedInstanceState) { ... przycisk = (Button)findViewById(R.id.button1); przycisk.setOnClickListener(this); ... } } 5. Przypisanie metody z poziomu pliku layoutu (.xml) Niepotrzebne jest implementowanie interfejsu (kompilator zrobi to niejawnie) Niepotrzebne jest definiowanie pola itp. public class MainActivity extends AppCompatActivity { public void przycisk_onClick(View v) { ((Button)v).setText("Brawo!"); } @Override protected void onCreate(Bundle savedInstanceState) { ... //przycisk = (Button)findViewById(R.id.button1); //przycisk.setOnClickListener(this); ... } } Plik content_main.xml: