I was watching Bucky's tutorial on Android development and had a general Java question I haven't really been able to wrap my head around for a year now. 

When adding a listener to a control, why do you have to create an interface and then place a callback method in it and THEN finally write the code you want to execute when a button (or other control) is clicked? 

public class MainActivity extends ActionBarActivity {

    protected void onCreate(Bundle savedInstanceState) {

        //reference to button
        Button btnBucky = (Button)findViewById(R.id.btnBucky);
        //click listener:
            new Button.OnClickListener(){
                //callback method:
                public void onClick(View v){
                    TextView txtBucky = (TextView) findViewById(R.id.txtBucky);


In .NET it is so much simpler. You just have one method like this:

protected void Button1_Click(object sender, EventArgs e)
// your code here

I guess i don't really understand Java in this sense. Is there some good reason for this?