3.Textview和Button的使用:点击按钮,返回点击次数

本文介绍了一个简单的Android应用程序示例,展示了如何使用TextView和Button控件制作一个点击计数器。通过设置UI布局、添加事件响应及更新TextView内容,实现每次点击按钮时更新显示的点击次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.目标页面

这里写图片描述

2.UI布局设置

  在该工程文件的activity_main.xml布局文件中设置TextView控件和Button控件。
  1.设置文件的布局:线性布局。可以直接在直观的页面中单击鼠标右键:Change Layout——>选择线性布局(垂直)
  2.TextView控件,显示点击的次数
<TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="点击的次数"
        android:textSize="24dp"/>
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  3.设置Button按钮控件:鼠标的点击
<Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="来点我啊"
        android:textSize="24dp" />
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  到这里,我们的静态页面布局就设置好了,接下来就是为按钮添加动作事件,TextView文本显示相应的内容。

3.事件响应设置

 在该工程下的src文件夹中找到MainActivity.java打开,可以看到系统为我们自动生成的代码文件。在这一部分我们要实现的就是点击按钮,文本显示相应的内容。
 因此有两个直观的变量是我们要设置的:TextView和Button类型的变量,为了以后控制和观看方便,这里的变量即属性。
 除了这两个属性之外,还有一个次数,是通过点击事件改变的一个参数,应此也需要提前定义。
private TextView tv;
private Button bn;
int number;
 
  • 1
  • 2
  • 3
 然后呢,就是在onCreat()方法里添加我们要执行的代码。
        //得到TextView和Button控件对象
        tv= (TextView)findViewById(R.id.textView1);
        bn=(Button)findViewById(R.id.button1);

        bn.setOnClickListener(new OnClickListener()
        {

            //当点击一次鼠标,number就加一次
            @Override
            public void onClick(View arg0) 
            {
                number++;
                tv.setText("点击了"+number+"次~");
            }
        });
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  这样,我们这个的程序就可以运行了。

4.运行效果

这里写图片描述

注意

  1. 在xml文件中的控件要有id,这样才能在java文件中的得到他们并加以操控;
  2. java文件中得到的id是通过findViewById(R.id.IdName)这个方法来实现的,同时也需要把得到的这个对象强制类型转换;
  3. 通过这个方法得到的IdName常常会报错,这个时候需要自己手动在R文件中添加id:鼠标移动到报错的行前面或者该位置,会智能弹出相应的操作,选择Creat field“*”in type ‘id’。ADT会自动到R文件添加对应的id;
  4. 通过R文件的id,将静态布局界面xml的控件id和写逻辑代码的java要操控的控件id联系起来。

友情帮助

  1. 遇到“Unfortunately,xxx has stopped”这种情况的时候,可以查看catLog来找到相应的错误,具体参考这:Android之Unfortunately,xxx has stopped错误的修改方法。 
    2.该项目的代码的下载页面:TextView和Button的结合使用:点击按钮,返回点击次数
``` auto.waitFor(); // 确保无障碍服务已启动 app.launchApp("猫眼"); // 启动猫眼应用 openConsole(); console.setTitle("猫眼 Go!", "#ff11ee00", 30); function getSellTime() { let sellTime = prompt("请输入抢票时间(格式如: 03-01 20:00)"); if (!sellTime || sellTime.trim() === &#39;&#39;) { toastLog("请输入有效的抢票时间!"); return getSellTime(); } return sellTime; } function main() { log("开始票星球抢票!"); let preBook = text("已 预 约").findOne(2000); let preBook2 = className("android.view.View").text("已填写").findOne(2000); let isPreBook = preBook2 !== null || preBook !== null; log("界面是否已预约:" + isPreBook); let inputTime = getSellTime(); log("输入的抢票时间:" + inputTime); let [time1, time2] = inputTime.split(" "); let [month, day] = time1.split("-").map(Number); let [hour, minute] = time2.split(":").map(Number); let now = new Date(); let year = now.getFullYear(); let startTimestamp = new Date(year, month - 1, day, hour, minute, 0, 0).getTime() - 80; let startTime = formatDate(startTimestamp); log("开抢时间:" + startTime); log("等待开抢..."); while (true) { let currentTimestamp = getCurrentTimestamp(); if (currentTimestamp >= startTimestamp) { break; } sleep(10); // 防止CPU占用过高 } log("冲啊!!!"); let buttons = ["立即预订", "立即购票", "特惠购票"]; for (let button of buttons) { let btn = className("android.widget.TextView").text(button).findOne(2000); if (btn) { btn.click(); log("点击了" + button + "按钮"); break; } } // ========== 通用配置 ========== // 定义优先级按钮组(高优先级先处理) const PRIORITY_BUTTONS = [ { name: "返回", selector: className("android.widget.Button").text("返回") }, { name: "刷新", selector: className("android.widget.TextView").textMatches(/^刷新/) } ]; // 定义支付按钮选择器 const PAY_BUTTON = { name: "立即支付", selector: className("android.widget.Button").text("立即支付") }; // ========== 核心函数 ========== // 增强型安全点击方法 function safeClick(elementName, selector) { try { const target = selector.findOne(); target.click(); console.log(`成功点击 ${elementName}`); return true; } catch (e) { console.warn(`${elementName} 点击失败:`, e.toString()); return false; } } // 监控并处理优先级按钮 function checkPriorityButtons() { let handled = false; PRIORITY_BUTTONS.forEach(btn => { if (btn.selector.exists()) { safeClick(btn.name, btn.selector); handled = true; } }); return handled; } // ========== 主流程 ========== // 第一阶段:确认弹窗处理 const confirmSelector = className("android.widget.TextView").text("确认"); confirmSelector.waitFor(); while (confirmSelector.exists()) { safeClick("确认", confirmSelector); sleep(100); } // 第二阶段:支付流程监控 setInterval(() => { // 优先处理返回/刷新类按钮 if (checkPriorityButtons()) { sleep(500); // 处理高优先级后等待界面刷新 return; } // 持续点击支付按钮 if (PAY_BUTTON.selector.exists()) { safeClick(PAY_BUTTON.name, PAY_BUTTON.selector); } }, 500); // 适当降低检测频率 // ========== 增强措施 ========== // 可选:加入防卡死检测 threads.start(function () { let lastActionTime = Date.now(); setInterval(() => { if (Date.now() - lastActionTime > 60000) { // 1分钟无操作重启 console.error("系统卡死,执行重启..."); restartApp(); } }, 5000); }); function getDamaiTimestamp() { try { let response = http.get("https://mtop.damai.cn/gw/mtop.common.getTimestamp/"); if (response.statusCode === 200) { let data = JSON.parse(response.body.string()); return parseInt(data.data.t); } else { throw new Error("请求失败"); } } catch (e) { log("获取大麦时间戳失败:" + e.message); return null; } } main();```以上代码内容存在哪些错误?该如何修改,在稳定的基础之上提高运行效率,适用于Autox.js的代码。
03-28
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值