Android多次点击弹出页面,关于android连续点击出现多个Activity界面的解决方法

本文介绍了Android中处理连续点击导致多个Activity界面弹出的问题,包括通过时间控制点击间隔和利用launchMode启动模式,以及详细解析了Android的四种启动模式。此外,还补充了两种退出多个Activity的经典方法。

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

关于android连续点击出现多个Activity界面的解决方法

发布时间:2020-09-26 16:46:43

来源:脚本之家

阅读:93

作者:sapodilla

前言

开始始学习android,对android的启动模式没有什么了解,就使用了时间判断是否重复点击了两次按钮,启动另外的activity界面,这样的控制方法,有时候会失效,比如,两秒钟还未启动另外的activity,那么又可以重复点击。所以,就调整为android的启动模式来控制重复出现多个acitvity。

一、通过时间控制点击次数:

这种方式对应控制网络请求不错。

public class NoDoubleClickUtil {

private static long lastClickTime;

private final static int SPACE_TIME =2000;

public static void initLastClickTime() {

lastClickTime = 0;

}

public synchronized static boolean isDoubleClick() {

long currentTime = System.currentTimeMillis();

boolean isClickDouble;

if (currentTime - lastClickTime >

SPACE_TIME) {

isClickDouble = false;

} else {

isClickDouble = true;

}

lastClickTime = currentTime;

return isClickDouble;

}

}

二、通过launchMode启动模式控制出现多个activity的方式:

这种方式真正意义上杜绝了同时出现相同的多个activity。

android:launchMode="singleInstance&

Android Studio中实现一个多选弹出框,并将选择的结果回填到文本框时遇到的问题可能是由于结果处理机制或UI更新部分存在一些小瑕疵。下面我会详细介绍如何创建一个多选弹出框以及确保每次点击都能正确地把所有选项内容显示在文本框内。 ### 创建多选弹出框 首先,在布局文件`res/layout/activity_main.xml`中定义两个视图组件:一个是用于触发弹窗的按钮,另一个是用来展示最终结果的TextView: ```xml <Button android:id="@+id/button" android:text="打开多选对话框" /> <TextView android:id="@+id/textViewResult" ... /> ``` 然后,在活动(`Activity`)里编写逻辑代码: 1. 准备好要显示给用户的字符串数组资源; 2. 定义一个布尔类型的数组保存用户的选择状态; ```java String[] items = {"苹果", "香蕉", "橙子"}; boolean[] checkedItems; StringBuilder selectedText; // 初始化checkedItems 和 selectedText checkedItems = new boolean[items.length]; selectedText = new StringBuilder(); ``` 接下来就是设置Button点击事件监听器并构建AlertDialog: ```java findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); // 设置标题、项及默认选中情况等属性... builder.setTitle("请选择水果") .setMultiChoiceItems(items, checkedItems, (dialogInterface, position, isChecked) -> { if(isChecked){ // 当前项已被勾选,则添加至结果列表 checkedItems[position] = true; updateSelectedText(position); } else{ // 如果取消了某一项,则从结果集中移除该项 checkedItems[position] = false; removeItemFromSelection(position); } }) .setPositiveButton(android.R.string.ok, null) .setNegativeButton(android.R.string.cancel,null); builder.show(); } private void updateSelectedText(int pos){ String itemToAdd= items[pos]+ ","; if(!selectedText.toString().contains(itemToAdd)){ selectedText.append(itemToAdd); ((TextView)findViewById(R.id.textViewResult)).setText(selectedText); } } private void removeItemFromSelection(int pos){ String patternToRemove = items[pos]+ ",?"; Pattern p = Pattern.compile(patternToRemove); Matcher m = p.matcher(selectedText); while(m.find()){ selectedText.delete(m.start(),m.end()); } ((TextView)findViewById(R.id.textViewResult)).setText(selectedText); } }); ``` 上述代码片段展示了如何通过 `updateSelectedText()` 方法向 TextView 添加新的选择项目,同时避免重复条目,并使用正则表达式来删除未选中的项。 注意这里我们只是简单实现了“加逗号”的拼接方式,实际应用当中可以根据需要调整分隔符或者其他细节问题。 最后,当您运行应用程序并且选择了某些项之后,“确定”键应该会自动刷新界面上的文字区域以反映最新的选取状况。 如果您发现即使做了以上操作仍然无法达到预期效果的话,请检查您的onCreate函数内部是否有其他影响数据流的地方或者是界面元素ID是否匹配等问题。 --
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值