【Java】Android EditText开发的一个容易忽略的坑
这几天接手做一个远程控制Android application,安卓前台的EditText用来输入ip地址、端口等信息,发现EditText的使用存在着巨坑一个!
我在网上找了半天,发现仅仅有人提出这个困惑,却没有解决。因此写篇文章来解一下。
EditText中,可以预先写好内容,用android:Text="..."属性。但问题是,当我更改输入内容时,后台却无法获取!如下:
XML布局:
<EditText
android:id="@+id/editIP"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="http://192.168.1.1"
/>
后台获取:
public class mainClass{
public EditText EditIP;
EditIp = (EditText)findViewById(R.id.editIp);
String text = EditIp.getText().toStirng();
//....
}
发现text并没有获取到前台输入的任何信息!
解决:
问题在于:程序执行上述2、3、4行,只是一瞬间的事,你还没输入完,它就过去了!即获取输入内容并不是堵塞的!
解决方法就是,在某个堵塞的行为之前获取,比如你在点击按钮之前获取,这样程序保证获取到的输入是你写在EditText中的!
即:
public class MyMainFrm extends Activity {
public EditText CameraIP,ControlIP,Port;
public Button Button_go;
public String videoUrl,controlUrl,port;
//public static String CameraIp;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mymainfrm);
Button_go = (Button) findViewById(R.id.button_go);
Button_go.requestFocusFromTouch();
Button_go.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v) {
// TODO Auto-generated method stub
//在这里获取,点击button_go之前,你肯定输入完成了
CameraIP = (EditText) findViewById(R.id.editIP);
ControlIP = (EditText) findViewById(R.id.ip);
Port = (EditText) findViewById(R.id.port);
videoUrl = CameraIP.getText().toString();
controlUrl = ControlIP.getText().toString();
port = Port.getText().toString();
//生成一个Intent对象
Intent intent = new Intent();
//在Intent对象当中添加一个键值对
intent.putExtra("CameraIp", videoUrl);
intent.putExtra("ControlUrl", controlUrl);
intent.putExtra("Port", port);
intent.putExtra("Is_Scale", true);
//设置Intent对象要启动的Activity
intent.setClass(MyMainFrm.this, MyVideo.class);
//通过Intent对象启动另外一个Activity
MyMainFrm.this.startActivity(intent);
finish();
System.exit(0);
}
});
}
【Java】Android EditText开发的一个容易忽略的坑的更多相关文章
- 实验四Java Android简易开发
实验准备 Android Studio下载 Android Studio安装 实验内容 Android Stuidio的安装测试 Android Stuidio的安装测试: 参考<Java和An ...
- 20162312实验四Java Android简易开发
实验准备 Android Studio 的下载: Android Studio 安装教程 准备中遇到的问题 最大的问题就是电脑无法虚拟化,因为微星的型号太多,我只好在网上找了许多方案一个个试,最后终于 ...
- 俯瞰 Java 服务端开发
原文首发于 github ,欢迎 star . Java 服务端开发是一个非常宽广的领域,要概括其全貌,即使是几本书也讲不完,该文将会提到许多的技术及工具,但不会深入去讲解,旨在以一个俯瞰的视角去探寻 ...
- java Android SDK安装与环境变量配置以及开发第一个Android程序
JAVA的安装与环境变量的配置 1.先下载JAVA,并且安装. 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u3 ...
- Android studio 开发一个用户登录界面
Android studio 开发一个用户登录界面 activity_main.xml <?xml version="1.0" encoding="utf-8&qu ...
- Android NDK 开发(四)java传递数据到C【转】
转载请注明出处:http://blog.csdn.net/allen315410/article/details/41845701 前面几篇文章介绍了Android NDK开发的简单概念.常见错误及处 ...
- 跟我学android-使用Eclipse开发第一个Android应用(三)
打开Eclipse,选择 File—New –Android Application Project Application Name 就是我们的 应用名称,也是我们在手机应用程序列表里看到的名称. ...
- 关于Android App开发技术分类的一个小总结
前言 本文从热更新.异步并发.性能优化.网络请求等多个方面对Android App开发的技术进行了一个分类总结.欢迎大家沟通交流. 热更新 [原]热更新开源项目Tinker源码解析之Dex热更新 [ ...
- 使用Kotlin开发第一个Android应用
直奔主题 第一步:为AndroidStudio安装Kotlin插件 在线安装步骤:File—>Settings—>Plugins—>Install JetBrains plugin… ...
随机推荐
- JVM源码分析--ClassLoader类加载器
本人原创,转载请注明出处:https://www.cnblogs.com/javallh/p/10224187.html 1.JDK已有类加载器: BootStrap ClassLoader (启动类 ...
- MVC5+EF6 --自定义控制Action访问权限
本章主要讲解在MVC中灵活控制Action的访问权限: 本章所使用的示例表也是上一张所使用的TbUser.TbRole.TbUserRole: 最终的效果是针对任意一个Action或Controlle ...
- IDEA报错Error:Module 'shop-common' production: java.lang.IndexOutOfBoundsException
问题描述: 本来项目是正常的,编译.运行.启动都是OK的,但是在一次电脑重启后,出现了以上这个问题:Error:Module 'shop-common' production: java.lang.I ...
- 关于jsp中jstl-core标签循环遍历的使用
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供 ...
- 001-电脑操作规范-2019年03月.doc
001-电脑操作规范-2019年03月.doc 本文作者:徐晓亮 BoAi 作者腾讯QQ号码:595076941 /////////////////////////////////////// ...
- Python-类的继承与派生
python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1( ...
- Integer的NPE问题
- 使用HttpUtils完成Http Basic 认证
调用声网(agora)的远程接口(Restful Api)时,对方需要使用Basic Auth的方式进行认证(需要输入用户名和密码). 一,使用Postman完成基于Basic Auth的Http认证 ...
- windows中在vs code终端使用bash
vs code Visual Studio Code的缩写,很好用的一个编辑器. 终端 vs code的终端(命令行)在windows中,默认使用的是powershell,如下图所示: powersh ...
- Problem 2285 迷宫寻宝
http://acm.fzu.edu.cn/problem.php?pid=2285 Problem Description 洪尼玛今天准备去寻宝,在一个n*n (n行, n列)的迷宫中,存在着一个入 ...