Android入门(四):链接接口组件和程序代码

时间:2023-10-28 16:07:25

  编写好layout中的接口组件之后,下一步就是编写控制接口组件的程序代码。上一章,我们使用了三种接口组件,在使用者输入性别和年龄之后点击“健康建议按钮”,程序会读取用户所填入的性别和年龄,然后显示判断结果,因此接口组件和程序代码之间必须能够互动并完成下列 3件事:

  1.btnDoSug按钮被点击后,程序开始运行判断的程序代码;

  2.程序代码必须能够读取edtSex和edtAge这两个EditText组件中的字符串;

  3.程序代码必须将最后的判断结果显示在txtResult组件中。

  (一)设置Button的click事件listener

  事件listener就是用来处理某一个组件事件的处理程序。当我们单击某一个组件时,就会触发相应组件的click事件,该事件会传到组件的click事件listener中进行处理。Android就是利用各种事件处理程序来运行用户的操作,而事件处理程序在Android中就称为事件listener。要设置Button组件的click事件listener需要完成下列步骤:

  1.建立一个OnClickListener对象。

   OnClickListener本身就是一个接口,当我们要建立一个OnClickListener的对象时,必须实现其中的onClick方法。例如下面的程序:

    Button.OnClickListener btnDoSugOnClick = new Button.OnClickListener()

    {

       public void onClick(View v)

      {

        //点击按钮后执行的程序

      }

    };

  2.所有定义在接口布局文件中的组件经过编译之后都会在R.java文件中,我们可以利用findViewById()从文件中取得接口组件

    Button btnDoSug = (Button)findViewById(R.id.btnDoSug);

   我们把取得的btnDoSug组件存入一个同名的Button对象(名字可以不一样)。

  3.把第一个步骤中建立的OnClickListener 对象,设置给第二个步骤中的Button对象的click事件listener。

     btnDoSug.setOnClickListener(btnDoSugOnClick);

  (二)整合代码

    

  import android.app.Activity;
  import android.os.Bundle;
  import android.view.View;
  import android.widget.Button;
  import android.widget.EditText;
  import android.widget.TextView;   public class MainActivity extends Activity {    private Button btnDoSug;
  private EditText edtSex, edtAge;
   private TextView txtResult;    @Override
   protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);    btnDoSug = (Button)findViewById(R.id.btnDoSug);
   edtSex = (EditText)findViewById(R.id.edtSex);
  edtAge = (EditText)findViewById(R.id.edtAge);
   txtResult = (TextView)findViewById(R.id.txtResult);    btnDoSug.setOnClickListener(btnDoSugOnClick);
   }    private Button.OnClickListener btnDoSugOnClick = new Button.OnClickListener(){   public void onClick(View view){
   //点击按钮后执行的代码
   String strSex = edtSex.getText().toString();
   int iAge = Integer.parseInt(edtAge.getText().toString());   String strSug = "结果:";
   if(strSex.equals("男"))
   {
  if(iAge < 28)
   strSug += "力量训练";
  else if(iAge > 33)
   strSug += "打太极拳";
   else
   strSug += "慢跑";
   }
  else
   {
  if(iAge < 28)
  strSug += "慢跑";
   else if(iAge > 33)
   strSug += "瑜伽";
  else
  strSug += "瘦身运动";
   }   txtResult.setText(strSug);
   }
  };
  }