4、第一行代码

        上节完成了回复功能的页面搭建,可是想要的功能并没有实现。页面设计(xml中实现想要的布局)和功能(页面逻辑,通常在java代码中实现)相分离,使开发者更易于操作。所以要实现想要的功能,来书写第一(N)行代码。

        代码写到哪,新建的工程只有MainActivity.java,当然是这个。写什么,想要实现点击回复,当然要把要操作的Button、EditText、TextView从xml中引入到java代码中。android:id="@+id/xxx"(xml中)和R.id.xxx(java代码中),可以使用findViewById(R.id.xxx)(为什么是View,控件的父类基本上都是View)来获取到类(控件)的对象(什么?还没有对象::>_<::)(把对象当作一个变量就好,但他有普通变量所没有的属性、方法)。



        在onCreate前定义用到的类对象:

TextView tv_review;
EditText et_review;
Button bt_review;

        为对象赋值,通过findViewById,在onCreate中,setContentView之后(要先把xml加载,才能获取其中的控件):
tv_review=(TextView)findViewById(R.id.tv_review);
et_review=(EditText)findViewById(R.id.et_review);
bt_review=(Button)findViewById(R.id.bt_review);

        为什么要强转,findViewById返回是View要强转为想要的类型。已经把xml中的控件赋值给java的对象,现在可以加入按钮点击的事件了。按钮(Button类)有一个方法叫setOnClickLisrener(OnClickListener listener),看名字就是为按钮添加一个点击监听器(触发某一事件后就会执行注册的监听器中的方法,类似回调,很好用)。在bt_review赋值之后:
bt_review.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View view) {
    //  TODO Auto-generated method stub

    }
});

        setOnClickListener函数参数是OnClickListener对象,这里直接new(什么是new)一个,会自动生成一个onClick函数。当bt_review按钮被点击就会执行onClick函数,在这里写下要处理的逻辑代码,把EditText中输入的文字显示到上方的TextView上。如何获取EditText所输入的内容,EditText有个方法getText(),如何赋给TextView,TextView的setText方法:
public void onClick(View view) {
//  TODO Auto-generated method stub
    if(!et_review.getText().toString().equals("")){

        tv_review.setText(et_review.getText());

    }
}

        获取et_review的内容,判断是否为空,不为空,赋给tv_review,运行工程,输入内容,点击回复。

注:这是一个.gif动图,ctrl点击图片查看。图录制的长宽比例不好,12节之后改正。

        编程的思想还要自己悟,简单的小功能,有点意思。

没有如果——2016/10/20


猜你喜欢

转载自zdphpn.iteye.com/blog/2368104