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.
即当你点击该按钮,系统会调用 点击时, 它现在正是我们想要的, 但这里是把它在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 并在与函数参数的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文本检索.
贵重的, a làm cái Tut Máy tính cầm tay đi a 😀
Sẽ có bạn nhé.
一个OI, bay gio em muon nhap tu 1 screen roi xuat ra 1 screen khac thi lam nhu nao a? (E set lam 2 activity, 1 cai nhap, con cai xuat e chua biet lam kieu gi)
Bạn dùng Intent nhé. Khi startActivity thì dùng startActivityForResult. Có thể xem kỹ hơn tại đây: https://www.cachhoc.net/2016/07/14/lap-trinh-android-bai-8-intent-chuyen-doi-giua-cac-man-hinh/
sao mà giao diện trong điện thoại ảo của e thì chỗ button đè lên chỗ nhập text luôn? không có giống như hình anh minh họa. Cách khắc phục như thế nào hả anh?
Cách khắc phục là bạn code giao diện chứ không kéo thả 🙂
欢迎您,陆军. Rất vui được làm quen với bạn. Mình chưa biết gì ltrinh android. nhưng rất thích cái này. Đang ấp ủ làm 1 ứng dụng như sau. Bạn hướng dẫn giúp mình nhé:
Tạo nhiều button:
+ Button A: khi nhấn button này, Android手机将调用 1 一定数量的机器在 3 钟 (干草5S) 然后熄灭, 重复这个过程,直到我们打的关机按钮. 就像反复出现,直到没有更多的出手机会
+ 按钮B: 另外,呼叫按钮,但没有出手, 等待对方拿起电话,该按钮C, ð, E表示了 (最初C按钮,ð,E的身份隐藏.
+ C按钮, ð ,E是数字键 1, 2, 3, 4… trong bàn phím khi gọi trên điện thoại vậy. 首席执行官: khi nhấn C thì điện thoại gọi gửi phím số 1 đến điện thoại nghe.
谢谢
欢迎, để làm được các việc đó bạn cứ search từ khóa theo bạn mô tả là được 🙂
Anh cho em hỏi là mình có thể ép kiểu đối tượng trong java mà hai đối tượng này cùng kế thừa từ 1 cha.Vi类对象类的实例对象和图层对象SVBach科学SV交通同一个对象类继承自sinhvien.Em想投SV运输SV bachkhoa
这不是离线.
所有学习 3 谢谢叔叔军事, 在完成计划的希望,医生
làm sao để cho nút nhấn hiểu nếu mình còn nhấn thì còn thực hiện vậy anh
你可以捕捉事件OnTouch.
或过
兄弟,我可以问您是否要将按钮剪辑到链接上吗? 1 谷歌铣削页面,我们必须做一个? 希望有一个句子
你看在这里,请: https://stackoverflow.com/questions/21973415/how-to-open-google-play-store-with-button-click
兄弟帮帮我
例如我有答案A B C D
如果按住A并选择B C D,它将仍然有效.
我想问我什么时候按住 1 如果答案正确,则单击另一个答案
试试谷歌: https://www.google.com/search?q=mutile+select+item+android&rlz=1C5CHFA_enVN787VN787&oq=mutile+select+item+android&aqs=chrome..69i57j0l3.10930j0j1&sourceid = chrome&即= UTF-8
我开始学习android, vừa đọc mấy dòng dẫn ở đầu em đã nghĩ ngay ra là sinh viên trường mình là chủ trang web này rồi ^_^ liệu có phải do cùng 1 môi trường dạy nên có lối suy nghĩ giống nhau ko anh ^_^
Cái này thì ko rõ 🙂