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

在调用recreate()方法时,TextInputLayout提示不会刷新

在调用recreate()方法时,TextInputLayout提示不会刷新的原因是因为recreate()方法会销毁当前Activity并重新创建一个新的Activity实例,但是TextInputLayout的提示文本是保存在EditText中的,而EditText的状态并没有被保存和恢复。

为了解决这个问题,可以在Activity的生命周期方法中手动保存和恢复EditText的状态。具体步骤如下:

  1. 在Activity的onSaveInstanceState()方法中保存EditText的状态。可以通过调用EditText的getText()方法获取文本内容,并将其保存在Bundle对象中。
  2. 在Activity的onCreate()方法中恢复EditText的状态。可以通过调用Bundle对象的getString()方法获取之前保存的文本内容,并将其设置给EditText。

以下是示例代码:

代码语言:txt
复制
public class MainActivity extends AppCompatActivity {
    private static final String KEY_TEXT = "text_key";
    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = findViewById(R.id.edit_text);

        if (savedInstanceState != null) {
            String savedText = savedInstanceState.getString(KEY_TEXT);
            editText.setText(savedText);
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        String text = editText.getText().toString();
        outState.putString(KEY_TEXT, text);
    }
}

通过以上步骤,当调用recreate()方法重新创建Activity时,EditText的文本内容将会被正确地保存和恢复,从而使TextInputLayout的提示刷新生效。

关于腾讯云相关产品,推荐使用腾讯云移动推送(https://cloud.tencent.com/product/tpns)来实现消息推送功能,以提升用户体验。腾讯云移动推送是一款高效、稳定、易用的移动消息推送服务,支持Android和iOS平台,可以满足各类应用的推送需求。

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

相关·内容

强大的提示控件TextInputLayout使用以及源码分析

,以下几个属性和方法需要声明一下: app:hintAnimationEnabled="true"可以开启动画,这个为true,获得焦点的时候hint提示问题会动画地移动上去。...app:errorEnabled="true",开启错误提示 textInputLayout.setCounterEnabled(true);用于 开启计数 textInputLayout.setCounterMaxLength...说明源码中必定有添加这个提示的逻辑,这里我们后面讨论,先继续往下看 mCollapsingTextHelper.setTextSizeInterpolator(AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR...,将其添加到TextInputLayout之中,还记得前面我们提过TextInputLayout之中肯定应该会有一个添加错误提示信息的方法,在这里我们找到了,同时这里的代码也是值得我们进行学习的,只有当用户设置错误提示为真的时候...,然后采用ViewCompat.postInvalidateOnAnimation方法进行刷新 private void calculateCurrentOffsets() { final

1.7K50
  • TextInputLayout输入框控件的悬浮标签

    中配置: dependencies { compile 'com.android.support:design:23.3.0' } TextInputLayout可以用来显示一个提示错误信息,...把Hint放到EditText左上方等效果的一个布局; 如果项目中有这类的需求,使用TextInputLayout实现起来非常方便; 使用方法也比较简单,直接用TextInputLayout包裹EditText...但是默认情况下,当你输入文本的时候TextInputLayout只会将Hint移动到左上方,不会有错误提示,错误提示需要我们手动设置: etUser= (EditText) findViewById...(true); //设置TextInputLayout异常提示信息 tilUser.setError("账号最大长度为6"); }else { //关闭TextInputLayout...异常提示 tilUser.setErrorEnabled(false); } } @Override //输入以后调用 public void afterTextChanged

    1.3K10

    WinForm多线程修改控件提示创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke

    方法一: 通用方法 public static partial class CtrlHelper { public static void SetControlSafe(T control...else action(); } } 使用 SetControlSafe(this.lbName, () => { this.lbName.Text = name; }); 方法二...: 一般多线程调用UI控件,涉及到跨线程修改UI,需要使用委托,比如如下: this.Invoke((MethodInvoker)delegate...btnRefresh.Enabled = true; }); 但是假如在多线程操作还没完成的时候,我就提前关闭窗体,则会引发InvalidOperationException,提示...“创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke” ,并且如果没有捕获到,则可能导致程序崩溃,直接关闭。

    2.5K10

    TextInputLayout-Android M新控件

    就如你知道的,这个属性允许你EditText的内容为空的时候显示一个自定义的提示。一旦用户开始输入,hint会消失。这并不理想,因为用户丢失了他们输入信息的上下文提示。...View.OnClickListener() { @Override public void onClick(View v) { // STUB } }); 我们知道当这个方法调用之后...不幸的是,如果你不告诉它,安卓不会自动的隐藏虚拟键盘。onClick方法体中调用hideKeyboard。...setError设置错误消息之前开启这个功能意味着显示错误的时候布局不会变化。你可以把这两个方法结合起来验证下我所说的。...设计范例中,控件的实现需要让用户输入的过程中不会丢失上下文信息,它是去年跟Material Design一起被谷歌介绍的。在这之前,没有让开发者将这个控件应用到实际项目中的支持库。

    75820

    Android Material Design系列之主题样式介绍说明等

    里面可以包含一个且只能有一个EditText,与传统的EditText不同,输入时EditText的hint提示文字会滑到上方,在用户输入的同时提示用户当前要输入的是什么,同时还可以设置输入错误的提示信息...TextInputLayout常用的方法有如下: setHint():设置提示语。 getEditText():得到TextInputLayout中的EditView控件。...特别注意:TextInputLayout不能单独使用,必须包裹EditView组件,且只能一个,设置错误提示信息一定要先setErrorEnabled(true);再设置setError()。...,可以右侧显示出错误信息的小弹窗提示。...这个系列可能有些基础,但是众口难调还请大家理解,会的同学可以略过,不会的就好好学习。总之,都是为了大家更进一步。重口难调,还请大家理解。

    1.2K70

    Android使用TextInputLayout创建登陆页面

    就如你知道的,这个属性允许你EditText的内容为空的时候显示一个自定义的提示。一旦用户开始输入,hint会消失。这并不理想,因为用户丢失了他们输入信息的上下文提示。...发送到后台之前你应该先检查输入的正确性。 第一步: 实现 onClick 方法 首先你需要处理按钮的点击。有许多方法处理按钮的点击。...不幸的是,如果你不告诉它,安卓不会自动的隐藏虚拟键盘。onClick方法体中调用hideKeyboard。...setError设置错误消息之前开启这个功能意味着显示错误的时候布局不会变化。你可以把这两个方法结合起来验证下我所说的。...设计范例中,控件的实现需要让用户输入的过程中不会丢失上下文信息,它是去年跟Material Design一起被谷歌介绍的。在这之前,没有让开发者将这个控件应用到实际项目中的支持库。

    1.6K10

    Android之MaterialDesign应用技术2-仿支付宝上滑搜索框缓慢消失

    toast就关掉了,而且具体哪一行错误也没有标红,这就很尴尬了,那么今天这个控件也是一个输入框,但是外层加一个布局(TextInputLayout),就可以达到精确到一行提示具体错误。...这时候TextInputLayout则是显示错误,TextInputLayout是LinearLayout的子类,用于辅助显示提示信息。...现在仅仅是过度效果,还没有加提示信息,用法很简单,但注意一点TextInputLayout只能包含一个TextInputEditText,如果写用户名和密码那就写两个TextInputLayout,哦,...> 这里要注意的是Id是加在 TextInputLayout上,Activity中获取也是获取的layout,那么怎么获取edittext输入的数据呢,有方法的。...(Editable s) //内容改变后调用  这两个方法简单demo上都用不到,这里就不过多解释了。

    1.6K100

    Material Design 进阶之二-使用TextInputLayout的登陆界面

    如果我们想写一个登陆界面是不是一般都写两组TextView,EditText及一个Button,不过体验并不是太好,等等这些麻烦的的处理Material Design TextInputLayout...---- 实施onClick方法 首先必须处理按钮单击。有很多方法可以处理按钮点击。...---- 显示错误 TextInputLayout 错误处理简单快捷。所需的方法是  setErrorEnabled和setError。...设置错误消息之前启用此功能setError 意味着显示错误时此布局不会更改大小。您应该结合这两种方法进行一些测试,以便您实际看到 我在说什么。...另一个有趣的事实是,如果尚未启用错误功能并且您调用setError传递非null参数,setErrorEnabled(true) 则会自动调用

    1.3K20

    Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding

    以此来刷新自己并展示给用户。   ...因为这个结果是对的,那就是数据持久化,因为我们知道手机切换屏幕的时候Activity是会重新创建的,因此如果我们的数据是放在Activity中,那么切换屏幕之后就会重置,输入框也不会有值,但是通过ViewModel...去保存输入框的值就不同了,虽然你的Activity切换屏幕的时候销毁并且重新创建了,但是我的MainModel依然稳定,所以我才能在横屏的时候也登陆,这样不会造成数据丢失。...采用了MutableLiveData的setValue()的方式,还有一种方式是postValue(),这里要注意一点setValue()只能在主线程中调用,postValue()可以在任何线程中调用。...当然这样还没有完成,最后一步是MainActivity中去进行绑定的。 进入MainActivity。onCreate方法中,先将其他的代码注释掉。

    15.3K86

    Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding

    以此来刷新自己并展示给用户。   ...因为这个结果是对的,那就是数据持久化,因为我们知道手机切换屏幕的时候Activity是会重新创建的,因此如果我们的数据是放在Activity中,那么切换屏幕之后就会重置,输入框也不会有值,但是通过ViewModel...去保存输入框的值就不同了,虽然你的Activity切换屏幕的时候销毁并且重新创建了,但是我的MainModel依然稳定,所以我才能在横屏的时候也登陆,这样不会造成数据丢失。...采用了MutableLiveData的setValue()的方式,还有一种方式是postValue(),这里要注意一点setValue()只能在主线程中调用,postValue()可以在任何线程中调用。...当然这样还没有完成,最后一步是MainActivity中去进行绑定的。 进入MainActivity。onCreate方法中,先将其他的代码注释掉。

    2.4K32

    android事件总线EventBus3.0使用方法详解

    Subscriber:事件订阅者,EventBus3.0之前消息处理的方法只能限定于onEvent、onEventMainThread、onEventBackgroundThread和onEventAsync...而在EventBus3.0之后,事件处理的方法可以随便取名,但是需要添加一个注解@Subscribe,并且要指定线程模型(默认为POSTING),四种线程模型下面会讲到。...Publisher:事件发布者,可以在任意线程任意位置发送事件,直接调用EventBus的post(Object)方法。...可以自己实例化EventBus对象,但一般使用EventBus.getDefault()就好了,根据post函数参数的类型,会自动调用订阅相应类型事件的函数。...EventBus.getDefault().post(messageEvent); 第二种.粘性事件 EventBus.getDefault().postSticky(messageEvent); 4.处理事件(eg.刷新

    51620

    Android5.0和6.0之后新增的控件说明

    5.0 PDF文件渲染器 PdfRenderer Android 5.0 任务调度器 JobScheduler Android 5.0 任务服务 JobService Android 5.0 v4 下拉刷新布局...StaggeredGridLayoutManager Android 5.0 cardview-v7 卡片视图 CardView Android 5.0 palette-v7 调色板 Palette Android 5.0 design 提示条...CollapsingToolbarLayout Android 5.0 侧滑删除 SwipeDismissBehavior Android 5.0 标签布局 TabLayout Android 5.0 文本输入布局 TextInputLayout...这个与系统版本有关,每个版本的android.jar是固定的,有该内核中定义的控件才能正常调用,没在内核中定义的控件在运行时会扔出类找不到的异常。...*系统的手机是无法正常调用这两个控件的。 2、第二类是v4兼容库提供的控件,位于SDK的android-support-v4.jar中。

    1.3K20
    领券