首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何解决android配置变更时edittext中getLayout()方法为空的问题

在Android开发中,当配置发生变更(例如屏幕旋转)时,Activity会被销毁并重新创建,这可能导致EditText中的getLayout()方法返回null的问题。解决这个问题的方法是使用SavedInstanceState来保存EditText的状态,并在Activity重新创建后恢复它。

具体步骤如下:

  1. 在Activity的onSaveInstanceState方法中保存EditText的状态:
代码语言:txt
复制
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putCharSequence("editTextValue", editText.getText());
}
  1. 在Activity的onCreate方法中恢复EditText的状态:
代码语言:txt
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    editText = findViewById(R.id.editText);

    if (savedInstanceState != null) {
        CharSequence editTextValue = savedInstanceState.getCharSequence("editTextValue");
        if (editTextValue != null) {
            editText.setText(editTextValue);
        }
    }
}

通过上述方法,当配置发生变更时,EditText中的文本将被正确地保存和恢复,避免了getLayout()方法返回null的问题。

此外,如果您在云计算领域使用Android开发,可以考虑使用腾讯云的移动开发解决方案。腾讯云提供了一系列移动开发相关的产品和服务,包括移动应用开发平台、移动推送服务、移动分析服务等。您可以根据具体需求选择适合的产品,详情请参考腾讯云移动开发解决方案官方文档:腾讯云移动开发解决方案

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android自由选择TextView文字 博客分类: Android AndroidUP

相信很多人抱有这样想法,很不幸,我也是。于是我就研究了一下EditText和TextView代码,然后将这个问题解决了。      ...我们看一下EditText源码,有一个OverridegetDefaultEditable方法,看名字意思是是否可编辑,这个方法直接返回true。...我们看看TextViewonTouchEvent、onTrackballEvent和onKeyEvent方法里面就明白了,在这些事件回调调用了ArrowKeyMovementMethod里面的这些方法...这个问题,用过ContextMenu都知道,view里面要使用ContextMenu,需要覆盖一个onCreateContextMenu方法,然后在里面创建ContextMenu各个选项。...发现一个重要方法getLayout(),然后获取一个Layout对象,通过x和y坐标知道当前字符串offset位置。       那么,问题就可以完美的解决了。

2.3K10

Android自定义支付密码输入框,光标问题总结!

image.png 本文主要分析自定义验证码输入框过程中常被忽视光标问题及个人一点经验总结 onDraw方法一直被调用 我们在onDraw方法添加Log日志,发现onDraw方法每间隔500ms...左右被调用一次 image.png 此处先给出解决办法: *当我们继承EditText自定义验证码输入框后,EditText自带光标对我们来说不可见,已经没有意义,因此需要将其隐藏掉,防止onDraw...方法一直被调用 isCursorVisible = false 问题分析 问题1:是什么方法一直在不停调用onDraw方法呢?...Blink类run方法每隔500ms会调用TextViewinvalidateCursorPath方法 问题3:如何自定义验证码输入框光标?...虽然EditText自带光标已经不能满足我们需求,但我们可以参考其光标闪烁源码,然后修改一下来满足我们需求,重点是修改光标绘制显示位置 在控件可见开启光标闪烁,控件不可见时取消光标闪烁 override

1.3K20

《Kotin 极简教程》第13章 使用 Kotlin 和 Anko Android 开发

我们添加其依赖如下: // Butter Knife,专门Android View设计绑定注解,专业解决各种findViewById compile 'com.jakewharton...那么要如何才能在Kotlin环境中使用ButterKnife呢? 在早些时候,ButterKnife作者已经帮我们想好解决方案了,那就是——KotterKnife,见名知意。...也就是说,如果我们上面添加了KotterKnife依赖,那么 Java 代码同时使用 Butter Knife 注解地方会绑定失败。不过这个问题,在后面的新版本已经解决。...: 配置项 功能说明 app:rrvEmptyLayoutId 当列表时候显示页面 app:rrvIsRefreshable 是否支持下拉刷新,通过setOnRefreshListener 或...另外,Kotlin Android 视图 DSL Anko帮我们从繁杂 XML 视图配置文件解放出来。

3.5K30

【Jetpack】DataBinding 架构组件 ⑤ ( 数据模型与视图双向绑定 | BaseObservable 实现双向绑定 | ObservableField 实现双向绑定 )

, 对应 TextView 组件显示内容也发生了相应修改 ; 上述绑定方式可以理解 单向绑定 , 因为 TextView 组件不能修改 , 只能显示 , 数据模型字段修改 , 可以改变...组件内容可以自行进行修改 , 数据模型 可以发起对 EditText 组件修改 , 同时 EditText 也可以发起对数据模型修改 , 那么就会出现一个 双向绑定 问题 ; 二、BaseObservable...build.gradle 构建脚本 , 在 " android / defaultConfig " 层级 , 配置 // 启用 DataBinding dataBinding..., EditText 组件设置值 , 也使用该函数设置值 ; 设置了 @Bindable 注解 , 只要 student 对象 name 发生了变化 , 绑定组件内容就会发生变化 ;..., 引入 StudentViewModel 类型对象 ; 在位 EditText 组件赋值 , 需要使用 android:text="@={student.studentName}" 进行赋值 ,

1.3K30

Android RxJava 实战系列:联合判断

本系列文章主要基于 Rxjava 2.0 接下来时间,我将持续推出 Android Rxjava 2.0 一系列文章,包括原理、操作符、应用场景、背压等等 ,有兴趣可以继续关注Carson_Ho...具体实现 原理 采用 RxJava 组合操作符combineLatest() 实现 关于组合操作符combineLatest() 使用请看文章::Android RxJava:组合 /.../* * 步骤2:每个EditText设置被观察者,用于发送监听事件 * 说明: * 1....传入EditText控件,点击任1个EditText撰写,都会发送数据事件 = Function3()返回值(下面会详细说明) * 3....TextUtils.isEmpty(name.getText()) ; // 除了设置,也可设置长度限制 // boolean isUserNameValid

71020

Android最佳性能实践(四)——布局优化技巧

没错,这样修改当然是没问题,不过这种修改方式会让所有引用titlebar界面都受到影响,而如何你只希望让activity_main.xml这一个界面受影响的话,那么可以使用覆写属性方式...那么我们如何才能让这些不常用元素仅在需要才去加载呢?Android为此提供了一种非常轻量级控件,ViewStub。...下面我们就来学习一下如何使用ViewStub来完成仅在需要才去加载布局功能,目前profile.xml只有一个EditText用于编辑信息,那么比如说我们还有另外三个不太常用EditText,就可以将它们定义在另外一个布局文件当中...XML当中配置profile_extra布局。...()得到值也会是

1.3K81

Android开发笔记(一百四十八)自定义输入法软键盘

3、系统软键盘会自动响应EditText焦点变更事件,常常在意料之外突然之间蹦出来,弄得开发者要么剥夺EditText焦点,要么强行关闭软键盘显示,但无论哪种方式都得开发者强行**,很不方便。...3、软键盘不是一个孤立控件,它按键动作需要实时在某个编辑框把数字显示出来,所以在使用时还得给它绑定一个EditText,这样软键盘才知道我按键要输出给这个EditText,而不是输出给那个EditText...,所以要在res/values/attrs.xml补充下列属性配置: <attr name="xml"...对象,即当软键盘发生按键动作,要把按键结果显示在哪个EditText上。...(如0-9),它们在键盘映射xmlkeycode值必须配置该字符ASCII码 editable.insert(start, Character.toString((char) primaryCode

2.4K30

Android使用TextInputLayout创建登陆页面

你可以从下方途中知晓我说是什么。 ? 在Google I/O 2015期间,安卓团队发布了一个崭新兼容库,Design Support Library。它简直就是解决这个问题而生。...它显示了一个“欢迎”文字(可以很容易替换成logo什么)与两个EditText元素,一个是用户名准备,一个是密码准备。布局还包含了一个触发登陆流程按钮。背景颜色是扁平风格灰色。...就如你知道,这个属性允许你在EditText内容时候显示一个自定义提示。一旦用户开始输入,hint会消失。这并不理想,因为用户丢失了他们输入信息上下文提示。...需要方法是setErrorEnabled和setError。 setError设置一个红色错误消息,显示在EditText下面。如果传入参数null,错误消息将清空。...现在我们定义了什么是错误什么是正确,也知道了如何获取EditText数据以及显示可能错误,onClick方法实现就很简单了。

1.6K10

android横竖屏切换问题

一、禁止横竖屏转换 Android横竖屏切换在手机开发中比较常见,很多软件在开发过程为了避免横竖屏切换引发不必要麻烦,通常禁止掉横竖屏切换, 通过在AndroidManifest.xml设置activity...每次屏幕切换动会重启Activity,所以应该在Activity销毁前保存当前活动状态,在Activity再次Create时候载入配置,那样,进行游戏就不会自动重启了!...layout-land是横屏layout,layout-port是竖屏layout,其他不用管,横竖屏切换程序调用ActivityonCreate方法,从而加载相应布局。...在Android工程Mainfest.xml配置Activity:android:configChanges="keyboardHidden|orientation",横竖屏切换之后就不会去执行OnCreat...super.onResume();   13. }   六、总结 总之,对于横竖屏切换问题,统计了下,大家解决办法是: ①不理会。。

2.2K20

安卓入门-第三章-安卓常用控件使用方式

design显示却是大写BUTTON,这是由于系统会对Button所有英文字母自动进行大写转换,如果这不是你想要效果,可以使用如下配置来禁用这一默认特性:加入描述语句:android:textAllCaps...那我们来看一看如何在界面上加入EditText吧,修改activity_main.xml代码,如下所示: <EditText android:id="@+id/edit_text...可以看到,EditText显示了一段提示性文本,然后当我们输入任何内容,这段文本就会自动消失。  不过,随着输入内容不断增多,EditText会被不断地拉长。...我们可以使用android:maxLines 属性来解决这个问题,修改activity_main.xml,如下所示: 加入描述性语句: android:maxLines="2"  这里通过android...这时你可能会问,旋转进度条表明我们程序正在加载数据,那数据总会有加载完时候吧?如何才能让进度条在数据加载完成消失呢?这里我们就需要用到一个新知识点:**Android控件可见属性。

1.8K20

TextInputLayout-Android M新控件

在Google I/O 2015期间,安卓团队发布了一个崭新兼容库,Design Support Library。它简直就是解决这个问题而生。...它显示了一个“登录”文字与两个EditText元素,一个是用户名准备,一个是密码准备。布局还包含了一个触发登陆流程按钮。背景颜色是扁平风格灰色。...就如你知道,这个属性允许你在EditText内容时候显示一个自定义提示。一旦用户开始输入,hint会消失。这并不理想,因为用户丢失了他们输入信息上下文提示。...需要方法是setErrorEnabled和setError。 setError设置一个红色错误消息,显示在EditText下面。如果传入参数null,错误消息将清空。...现在我们定义了什么是错误什么是正确,也知道了如何获取EditText数据以及显示可能错误,onClick方法实现就很简单了。

74120

Android富文本开发

如何在ViewGroup添加view,删除view给相应view和受影响其他view添加动画,不太容易做。...如果当前获取焦点EditText,直接在EditText下方插入图片,并且插入EditText 代码思路如下所示/** * 插入一张图片 * @param imagePath...,直接在EditText下方插入图片,并且插入EditText } else if (editStr1.length() == 0) { //如果光标已经顶在了...EditText位置插入一个EditText,以便连续插入多张图片时,有空间写文字,第二个EditText下移 在EditText位置插入图片布局,EditText下移。...android定义了一个属性,名字windowSoftInputMode, 这个属性用于设置Activity主窗口与软键盘交互模式,用于避免软键盘遮挡内容问题

8.4K20

Android消息推送:手把手教你集成小米推送

前言 在Android开发,消息推送功能使用非常常见。 ? 为了降低开发成本,使用第三方推送是现今较为流行解决方案。...今天,我将手把手教大家如何在你应用里集成小米推送 该文档基于小米推送官方Demo,并给出简易推送Demo 看该文档前,请先阅读我写另外两篇文章: 史上最全解析Android消息推送解决方案...背景:在这个初始化推送服务过程,是需要联系小米推送服务器来申请reg id(即推送token)。 冲突:初始化过程可能失败:网络问题(没网or网络信号弱)、服务器问题导致初始化失败。...小米推送Demo里并没有相关措施解决这个问题 解决方案:在初始化失败情况下提供重试机制,直到初始化成功(可以通过检测是否已经拿到推送token来确定),问题解决逻辑如下: ?...总结 相信大家已经非常了解如何在你Android应用中集成小米推送 接下来,我会继续介绍具体如何Android关于推送消息,请看 史上最全解析Android消息推送解决方案 Android

4.3K20

Android文件读写和使用SharedPreferences储存数据

我们定义了两个方法:saveText() 和 readText() 分别用于储存 EditText 输入内容和恢复 EditText 内容。...主要是一些Java文件操作,如果不熟悉的话可以去网上找一些教程。在 onDestroy 方法调用 saveText 来储存 EditText 数据。...,在 onCreate 方法我们进行恢复 EditText 数据。...这里说一些 TextUtils.isEmpty(CharSequence str) 方法,一个静态方法,如果strnull或者空字符,这个方法都会返回true。这里用来检测字符串是否。...下面通过一个简单实例来介绍SharedPreferences:模拟账号登录过程记住密码问题: 新建一个Android工程: activity_main.xml: <?

1.9K10

android学习笔记----SQLite数据库

onCreate()和onUpdate(),我们必须在自己帮助类里面重写这2个方法,然后分别在这两个方法实现创建、升级数据库逻辑。...那么如何让onUpdate()方法能够执行呢?我们这里MyDBOpenHelper构造器第四个参数是当前数据库版本号,之前传入是1,现在只要传入一个比1大数字即可运行onUpdate方法。...nullColumnHack:当values参数或者里面没有内容时候,我们insert是会失败(底层数据库不允许插入一个空行),为了防止这种情况,我们要在这里指定一个列名,到时候如果发现将要插入行为空行时...类型数据initialValuesnull,或者size<=0,就会再sql语句中添加nullColumnHack设置。...传递NULL将导致包括所有行组,并且在不使用行分组是必需。     orderBy:如何对行进行排序,格式化为SQLOrderBy子句(不包括Order本身)。

96420

android短信验证码方案,Android之短信验证码

接口文档:https://www.juhe.cn/docs/api/… 程序界面如下所示: 实现步骤: 1.到聚合数据官网上申请短信验证SDK数据,生成AppKey,如下图所示: 2.配置工程,把相关...value=”你appkey” /> 4.在src中加入MyApplication类,并且在AndroidManifest.xml文件中将applicationname属性设置src定义MyApplication...(如android:name=”com.bear.smscaptcha.MyApplication”),在MyApplicationonCreate()方法调用接口初始化: import com.thinkland.sdk.util.CommonFun...成功; 1 错误; 本地: -2 本地网络异常; -3 服务器网络异常;-4 解析错误;-5初始化异常 reason 返回信息 成功或错误原因. result 返回结果,JSON格式.错误或者无返回值...成功; 1 错误; 本地: -2 本地网络异常; -3 服务器网络异常;-4 解析错误;-5初始化异常 reason 返回信息 成功或错误原因. result 返回结果,JSON格式.错误或者无返回值

10.3K50

Android开发笔记(一百四十六)仿支付宝支付密码输入框

因为用户可能希望App会更加智能一些,比如用户希望编辑框提供关键词联想功能,又比如用户希望编辑框能够自我纠错等等;所以,Android从设计之初就努力尝试解决这些问题,先是自带了自动完成编辑框AutoCompleteTextView...对于处理密码输入EditText来说,需要实现以下几项操作: 1、把默认下划线背景替换为圆角背景,且支持在获得焦点高亮显示; 2、屏蔽输入光标,可调用setCursorVisible方法设置不可见...; 3、把输入文字变成不可见,这里建议把文字颜色设为透明,而不是把文字大小设为0,因为若将大小设为0就无法自适应高度; 4、设置输入字符串长度6,设置长度操作可调用setFilters方法; 5、添加文本变更监听器...,队列长度6; 2、每项密码文本控件都是一个TextView,文字居中对齐; 3、往布局上添加TextView队列,在相邻TextView之间要添加一条竖线,也就是宽度1灰色View; 4、依据转换规则...这个需求看起来很简单,只要强行给TextView队列调用setText方法即可,然而这不是安全做法,因为它丢弃了CharSequence丰富信息。

1.8K30
领券