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 {

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

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

        );
    }
}

 
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?