【Java】Android EditText开发的一个容易忽略的坑
2024-09-09 07:31:57
这几天接手做一个远程控制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);
}
}); }
最新文章
- iOS多线程之6.GCD的其他用法
- listview 的适配器 getview 随着软件健盘显示和隐藏,出现多个空的position问题
- python开启简单webserver
- easyui只打开一个tab
- PrincipalView的使用参数
- (转)Java DES 与Base64
- Distant Supervision for relation extraction without labeled data
- JAVA数字证书制作生成
- 【01】视C++为一个语言联邦
- HDU 4411 Arrest
- Python基础-类的探讨(class)
- Problem C: 学生的排序
- 【持续更新】JavaScript常见面试题整理
- 【前端工具】Chrome 扩展程序的开发与发布 -- 手把手教你开发扩展程序
- day22:初识面向对象
- Tigase-01 使用spark或spi登录Tigase服务器
- Failed to load driver class com.mysql.jdbc.Driver from HikariConfig class classloader sun.misc.Launcher$AppClassLoader@18b4aac2
- vue错误记录
- opengl 入门浅学(一)
- 二维码扫描开源库ZXing定制化
热门文章
- Google机器学习课程基于TensorFlow : https://developers.google.cn/machine-learning/crash-course
- OSGI基础环境搭建
- docker配置阿里云镜像加速
- mybatis 的sql语句及使用mybatis的动态sql mybatis防注入
- pandas数据的分组与分列
- Oracle和Elasticsearch数据同步
- Eclipse启动错误JVM terminated. exit code 1解决方法
- ReentrantLock源码分析
- 前端开发之jQuery库
- docker技术之安装