我刚开始尝试了解Java以便能够编写简单的Android应用程序。现在我尝试与“标准控制”取得联系,正如我的书所说。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CheckBox cb = (CheckBox) findViewById(R.id.checkBox1);
cb.setOnCheckedChangeListener( new OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked)
{
TextView tv = (TextView) findViewById(R.id.textView1);
if (isChecked){
tv.setText("Checkbox is checked!!");}
else {tv.setText("Checkbox is unchecked!!");}
}
});}
我的GUI包含TextView和CheckBox对象。 我基本上从我的书中复制了这段代码。然而,我或多或少地了解最新情况。 据我所知,一个过程/方法(称为“onCheckedChanged”)应该作为订阅者添加到我的Checkbox的事件“OnCheckedChange”。不幸的是,我没有得到调用此过程的时间或地点,因为它必须得到参数对象,对吗? 到目前为止,该过程只“知道”参数应该是哪种类型。 我认真地试图解决这个问题,但在一两个小时内没有取得任何进展。 因此,如果有人能帮助我,我会非常感激。
答案 0 :(得分:0)
系统为您调用onCheckedChanged()
方法,并在您为已添加侦听器的CheckBox更改检查状态时将参数传递给方法。这是由系统自动处理的,具有正确的参数(检查状态已更改的CheckBox
以及现在是否已检查),您可能永远不想在代码中手动调用onCheckedChanged()
。
您应该知道您没有直接订阅方法onCheckedChanged()
。您实际上是在创建一个实现onCheckedChangeListner
接口并在此类中实现该方法的匿名类。您正在将此类的实例化对象传递给setOnCheckedChangeListener()
方法。
请注意您在发布的代码中覆盖的onCreate()
方法。这类似于系统在创建Activity
对象时调用它。在您自己的代码中,您无法在onCreate()
对象上调用Activity
,这是一个回调,您可以覆盖并添加代码。