首页
学习
活动
专区
工具
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平台,可以满足各类应用的推送需求。

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

相关·内容

Android开发笔记(一百三十八)文本输入布局TextInputLayout

TextInputLayout是MaterialDesign库中对编辑框EditText进行增强的一个控件。众所周知,EditText未输入字符时,我们可以给它显示默认的提示文字hint;可是一旦输入字符,这个hint提示就消失了,虽然没有提示也没有什么大碍,但有总比没有好呀。TextInputLayout便是用来解决提示文字的显示问题,它默认把提示文字显示在编辑框的上方,这样在编辑框内输入文字,就不影响上方的提示文字了。 代码中使用TextInputLayout要进行以下改造: 1、添加几个库的支持,包括design库(TextInputLayout需要)、appcompat-v7库(AppCompatActivity); 2、编辑框所在页面的Activity需要继承自AppCompatActivity,否则运行时打开页面会报错; 3、布局文件中在TextInputLayout节点下面加入EditText控件,必须并且只能加入一个EditText; 下面是TextInputLayout新增的方法说明: setHint : 设置提示文字的内容。 setHintEnabled : 设置提示文字是否可用。 setHintTextAppearance : 设置提示文字的风格。 setHintAnimationEnabled : 设置提示文字的展示动画是否可用。 setError : 设置错误文字的内容。 setErrorEnabled : 设置错误文字是否可用。 setCounterEnabled : 设置文字计数器是否可用。 setCounterMaxLength : 设置文字计数器的最大长度。 从以上方法可以看到,TextInputLayout增加的界面元素主要是三个,分别是位于编辑框左上角的提示文字、位于编辑框左下角的错误文字、位于编辑框右下角的文字计数器。具体的文本输入布局效果如见下:

03
  • 一篇博客让你了解Material Design的使用

    Material Design是Google设计的一套视觉语言,将优先的经典的设计原理与科技创新相结合,为开发者提供一套完成视觉和交互设计规范。移动设备是这套设计语言的基础对象,让用户在不同的平台、不同尺寸的设备上能保持一致的体验。 Material Design强调交互上的即时反馈,即对于用户的触控等行为app需要给出即时的反应。同时Material Design要求应用给用户带入感,让用户在使用时是沉浸在当前的应用当中。例如Google给出了沉浸式状态栏等“工具”,希望通过改变StatusBar和NavigationBar来给用户更强的融入感,专注于应用本身提供的内容。 Google从动画、颜色、样式、触控反馈、布局等多个方面给出了Material Design的设计要求。无论是单一的控件还是图文布局,Google都给出了明确的设计说明,有兴趣的同学可以去上方提到的官方链接处做进一步了解。

    03
    领券