Android的编程 – 帖子 3: 获取按钮的Click事件

前几天他很详细的研究,由于Android是想知道如何单击更改字母键不耐烦的TextView. 因此,本文中我们将了解如何获取按钮操纵事件的TextView和EditText上. 我们将继续在低位项目 2 和任务是如何单击按钮时,显示的TextView我们在EditText上已经进入了话.

[qads]

我们回顾前一天有点界面如下图所示:
文本编辑按钮

为了能与巴顿和的TextView和EditText上操纵我们必须连接这些元素java代码java代码与他们操纵. 要连接到Java, 每个元素应该有 1 ID. 你能理解id是每个元素的识别号. 我们设置id以元素如以下的TextView 机器人:ID =”@ + ID /电视”. 从而 电视 TextView的是,该身份. 在这之后,你应该设置tvName, tvPhone,… TextView的电视架, 名称是名称, 电话是手机, 即TextView中显示,显示的姓名和电话的TextView. 所以,我们的代码是这样的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.nguyenvanquan7826.tut2texteditbutton.MainActivity">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

    <EditText
        android:id="@+id/edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter text here" />

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click me" />

</LinearLayout>

一旦你设置组件的ID, MainActivity.java文件,你回来开始实施代码.
Vì bài này chúng ta mới là bài đầu tiên động chạm đến code java nên mình giới thiệu qua một chút. Hiện tại code java của chúng ta như sau:

package com.nguyenvanquan7826.tut2texteditbutton;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

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

不像在你前面学到的纯Java. 我们不会有main函数启动一个程序,每一个活动将开始运行功能的onCreate. 这里:

  • super.onCreate(savedInstanceState); 是当前继承AppCompatActivity的onCreate函数调用的.
  • 的setContentView(R.layout.activity_main); 我们的界面的命令是activity_main.xml中的文件 – 我们主要的xml文件从一开始就操纵直到现在. 如果创建 1 在/其他的XML文件RES /布局,我们绝对可以将它作为该活性的研究的setContentView命令接口.

现在我们开始的主要部分被连接到处理器和接口. 要连接接口, 我们将宣布类型按钮对应的变量, 弗吉尼亚州的EditText TextView的. 你看下面的代码:

package com.nguyenvanquan7826.tut2texteditbutton;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    /*
    * khai bao cac bien view
    * */
    private TextView tv;
    private EditText edit;
    private Button btn;

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

        // goi ham ket noi view
        connectView();
    }
    /*
    * ket noi cac thanh phan view
    * */
    private void connectView() {
        tv = (TextView) findViewById(R.id.tv);
        edit = (EditText) findViewById(R.id.edit);
        btn = (Button) findViewById(R.id.btn);
    }
}

相应的,我们需要排队行为变量后报价 14, 15, 16, 我们调用函数的onCreate connectView. ConnectView功能是,我们写连接到接口的功能. 要连接,我们使用功能的元素 findViewById 用于传输到 R.id.xyz 这里的xyz是我们为XML文件中的元素的ID. 然而,这个函数返回查看的类型 (查看是一切类型的组件的父亲, 即的TextView, 的EditText, 钮,… 从View继承) 因此,我们需要的确切类型的每个元件的铸造如上.

所以该接口的连接被完成的. 现在我们开始通过调用做捕获的按钮事件 setOnClickListener. 我们有很多的事件捕捉, 然而,我只引导你 2 我想人们经常使用的最常见方式.

如何 1: 在游戏中被捕

/*
* ket noi cac thanh phan view
* */
private void connectView() {
    tv = (TextView) findViewById(R.id.tv);
    edit = (EditText) findViewById(R.id.edit);
    btn = (Button) findViewById(R.id.btn);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            doClickButton();
        }
    });
}

private void doClickButton() {
    String text = edit.getText().toString().trim();
    tv.setText(text);
    edit.setText("");
}

你越写btn.setOnClickListener在括号和写作 新ONC 意见箱会出现,您选择的第一个是 View.OnClickListener 这是 1 接口来自动为你的函数生成代码的onClick.
setOnClickListener按钮

即当你点击该按钮,系统会调用 点击时, 它现在正是我们想要的, 但这里是把它在TextView的的EditText文本. 我们写的功能,并调用它在onclick doClickButton. 在功能doClickButton, 我们看到 3 当前.

  • 文本的第一行取出赋值给变量的EditText文本字符串 (ToString函数是把我们拿出了一个链, 微调功能是在开始删除空白和结束时,如果). 因此,我们 文字的EditText通过采取功能的gettext();
  • 第二行是我们要获得与功能的TextView课本的setText(文本)
  • 第三行, 我们的EditText删除的文字.

现在你跑独自享受成果.
事件点击按钮

如何 2: 获取到许多按钮一次

如果您发现, 就是这样 1, 每一个按钮,我们将 1 和事件段,用于它自己的. 因此,在多按钮的情况下 (由于VD掌上电脑) 该代码将是非常漫长和不便. 因此,如何 2 将适合于这样的情况下. 您可以编辑该事件的代码的方式如下所示启动.

/*
* ket noi cac thanh phan view
* */
private void connectView() {
    tv = (TextView) findViewById(R.id.tv);
    edit = (EditText) findViewById(R.id.edit);
    btn = (Button) findViewById(R.id.btn);

    btn.setOnClickListener(this);
}

这意味着我们不要再创建新的OnClickListener,这是传递给函数setOnClickListener. 但现在你会看到一个错误. 把光标放在单词 , 在那里,他失败, 然后按 一切 + 进入 你会看到一个对话框提示出现:
实施-点击数按钮

您选择行 2 是 请MainAcitvity实施View.OnClickListener, 出现以下对话框, 您选择确定.
实施法-的onclick

等待学生将进行系统的代码,你会看到的功能 自发的onClick 并在与函数参数的onCreate, 以上的班线更 实现View.OnClickListener. 在这里我们了解到,整个班级是一个接口MainAcitivty例如,View.OnClickListener所以它可以函数来执行逮捕的onclick事件对整个按钮 (或某些观点) 呼吁setOnClickListener(此); 因此,我们可以对很多按钮的同时启动事件. 为了区分我们点击按钮的onClick函数 1 打开查看, 这就是我们区分. 假设我们添加 1 除了界面按钮来删除的EditText文本我们的代码如下所示:

接口代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.nguyenvanquan7826.tut2texteditbutton.MainActivity">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

    <EditText
        android:id="@+id/edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter text here" />

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click me" />

    <Button
        android:id="@+id/btnClear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Clear" />

</LinearLayout>

JAVA代码.

package com.nguyenvanquan7826.tut2texteditbutton;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    /*
    * khai bao cac bien view
    * */
    private TextView tv;
    private EditText edit;
    private Button btn;
    private Button btnClear;

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

        // goi ham ket noi view
        connectView();
    }

    /*
    * ket noi cac thanh phan view
    * */
    private void connectView() {
        tv = (TextView) findViewById(R.id.tv);
        edit = (EditText) findViewById(R.id.edit);
        btn = (Button) findViewById(R.id.btn);
        btnClear = (Button) findViewById(R.id.btnClear);

        // set on click
        btn.setOnClickListener(this);
        btnClear.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btn:
                doClickButton();
                break;
            case R.id.btnClear:
                doClickButtonClear();
                break;
        }
    }

    private void doClickButton() {
        String text = edit.getText().toString().trim();
        tv.setText(text);
        edit.setText("");
    }

    private void doClickButtonClear() {
        edit.setText("");
    }

}

今天我们在这里停. 我们希望你能理解和实践好事件的按钮启动操作,把文本, 从TextView中和的EditText文本检索.