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

在重新启动活动之前,TextView为空

是指在Android应用程序中,当活动(Activity)被销毁并重新创建时,TextView控件的文本内容为空。

在Android开发中,活动的生命周期包括创建、启动、暂停、恢复、停止和销毁等阶段。当活动被销毁后,例如由于设备旋转或内存不足导致系统回收活动资源,活动会重新创建。在重新创建活动时,之前设置的TextView文本内容会丢失,因此TextView为空。

为了解决这个问题,可以使用以下方法之一:

  1. 保存和恢复状态:在活动的onSaveInstanceState方法中保存TextView的文本内容,并在onCreateonRestoreInstanceState方法中恢复文本内容。这样可以确保在活动重新创建时,TextView的文本内容不会丢失。
代码语言:java
复制
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString("textViewText", textView.getText().toString());
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    String textViewText = savedInstanceState.getString("textViewText");
    textView.setText(textViewText);
}
  1. 使用ViewModel:使用Android Architecture Components中的ViewModel来保存和管理活动的数据。ViewModel在活动重新创建时会保持其状态不变,因此可以使用ViewModel来保存TextView的文本内容。
代码语言:java
复制
public class MyViewModel extends ViewModel {
    private MutableLiveData<String> textViewText = new MutableLiveData<>();

    public void setTextViewText(String text) {
        textViewText.setValue(text);
    }

    public LiveData<String> getTextViewText() {
        return textViewText;
    }
}

// 在活动中使用ViewModel
public class MyActivity extends AppCompatActivity {
    private MyViewModel viewModel;

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

        viewModel = ViewModelProviders.of(this).get(MyViewModel.class);

        final TextView textView = findViewById(R.id.textView);

        viewModel.getTextViewText().observe(this, new Observer<String>() {
            @Override
            public void onChanged(@Nullable String text) {
                textView.setText(text);
            }
        });
    }

    // 在活动中设置TextView的文本内容
    private void setTextViewText(String text) {
        viewModel.setTextViewText(text);
    }
}

通过以上方法,可以在重新启动活动之前保持TextView的文本内容不为空,提高用户体验。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,建议在腾讯云官方网站或文档中查找相关产品和服务,以获取更详细的信息。

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

相关·内容

DAX里将值或0显示减号?这个问题可能困扰不少人!

- 问题 - 近期碰到个很有意思的例子,一个度量值,其中判断某个值0时,结果用减号“-”表示,不是0时执行相应的除法: 但是,明明用条件设置了这里应该显示减号(“-”),但结果却显示...(纯凭经验,没深究,不严谨),这可能是由于DAX中的类型自动转换导致的,因为“-”是DAX(也是很多其他编程语言)里唯一既作为运算符(减,如3-2)又同时是符号(负,如-1)的字符,所以,单独的“-”参与度量计算的过程被转换成了类似...,但在DAX公式里面,可以理解符号前后的空格是不影响计算结果的。 - 尝试 2 - 那还有其他什么办法?...这个时候,根据对计算机字符集的了解(又是经验),可以加上一个不可见字符,如UNICODE字符集里第9个,如果在Excel的传统表格或Power BI里,可以轻松用UNICHAR(9)得到,可惜,Excel...的Power Pivot里,却没有UNICHAR这个函数(对于DAX函数的适用范围,可以DAX.Guide网站上查到,这是DAX函数用法及案例最佳参考网站哦,拿走不谢!)

3.7K20
  • android学习笔记----隐式意图和显式意图

    隐式意图和显式意图: 显式意图:显式意图明确指明了启动活动的上下文和想要启动的目标活动,显式意图明确指定了Intent应该传递给哪个组件。 隐式意图:没有明确指定组件名的Intent隐式意图。...,就用startActivityForResult startActivityForResult(intent, 1); // 请求码1 } // 活动销毁后返回上一个活动的...如果活动显式返回,则不会返回任何结果,或者操作期间崩溃,resultCode将为RESULT_CANCELED。 当您的活动重新启动时,您将在onResume()之前立即收到此调用。...如果您的活动将noHistory设置true,则永远不会调用此方法。...由于一个活动中有可能调用startActivityForResult()方法去启动很多不同的活动,每一个活动返回的数据都会回调到onActivityResult()这个方法中,因此我们首先要做的就是通过

    1.3K10

    【Android编程实战】StrandHogg漏洞复现及原理分析_Android系统上的维京海盗

    ,并将自身恶意活动插入合法活动之前 使得用户并没有意识到自己已经遭到攻击 [漏洞影响Android版本] 至2020年1月26日,经过测试,该漏洞影响Android全版本,包括目前最新的Android10...App的恶意项目 并且让恶意软件劫持合法App,使恶意活动插入到合法活动之前,实现攻击目的 编译一个合法项目并安装在手机上 项目命名为BeAttacked 包名:com.victim.app 其UI只有一个...TextView控件,并且显示Hello World这段字符 该项目假设为攻击者欲攻击的合法App 接下来新建一个利用此漏洞的恶意软件项目,命名为Attack 布局代码 activity_main.xml...从而增加了恶意软件迷惑性 代码已经编写完毕,还有一个问题,攻击者要怎么利用漏洞使得恶意活动插入合法活动之前呢?...0x02 漏洞原理分析 此漏洞利用涉及到任务栈问题,稍微复杂,所以我画了一张图来阐述为什么恶意活动可以插入到合法活动分析之前请先读图,帮助理解 ?

    2.8K40

    Android实战技巧:ViewStub的应用

    可以为ViewStub指定一个布局,Inflate布局的时候,只有ViewStub会被初始化,然后当ViewStub被设置可见的时候,或是调用了ViewStub.inflate()的时候,ViewStub...ViewStub只能Inflate一次,之后ViewStub对象会被置。按句话说,某个被ViewStub指定的布局被Inflate后,就不会够再通过ViewStub来控制它了。...程序的运行期间,某个布局Inflate后,就不会有变化,除非重新启动。...先来看看布局,一个是主布局,里面只定义二个ViewStub,一个用来控制TextView一个用来控制ImageView,另外就是一个是显示文字的做的TextView布局,一个是ImageView而做的布局...layout_marginRight="5dip" android:layout="@layout/viewstub_demo_image_layout"/> TextView

    23520

    大话企业级android读书笔记(二)

    当它再次显示给用户时,必须要完全重新启动和恢复到之前的状态。...一个活动onCreate()中做所有的“全局”状态的初始设置,onDestroy()中释放所有保留的资源。...举例来说,你可以onStart()中注册一个广播接收者监视影响你的UI的改变,onStop() 中注销。因为活动可视和隐藏之间来回切换,onStart()和onStop() 可以调用多次。...着色的椭圆表示活动的主要状态,矩形表示当活动状态之间转换时你可以执行的回调方法。 ?...因为onPause()是唯一一个保证进程被杀之前会调用的,因此你应该使用onPause()来写任何持久化存储数据。 被标记为No的方法保护活动寄宿的进程在他们调用的时候不会被杀掉。

    1K50

    Android应用界面开发——简单控件和Activity间传递数据

    开启Android开发之旅 要想开发一个Android App,开发环境是必不可少的,所以学习之前应该先搭建环境,环境如下: JDK + Android SDK(配置环境变量) 开发环境:Android...第四步:输入主活动名称以及主活动布局文件名称。 ? Finish,一个工程就创建好了。...当Activity被onStop后,但是没有onDestroy,再次启动此Activity时调用onRestart(而不再调用onCreate)方法。...进入主界面,有两个按钮,一个TextView,一个按钮是进入买书界面,点击该按钮将会跳转到买书界面,您要买的书后面是一个TextView买书界面输入书名后,提交,会把输入的书名返回给该界面,另一个按钮是重置...,点击该按钮,您要买的书就会被重置

    1.9K30

    Androidlayout xml中使用ViewStub完成动态加载问题

    可以为ViewStub指定一个布局,Inflate布局的时候,只有ViewStub会被初始化,然后当ViewStub被设置可见的时候,或是调用了ViewStub.inflate()的时候,ViewStub...ViewStub只能Inflate一次,之后ViewStub对象会被置。按句话说,某个被ViewStub指定的布局被Inflate后,就不会够再通过ViewStub来控制它了。 2....程序的运行期间,某个布局Inflate后,就不会有变化,除非重新启动。 因为ViewStub只能Inflate一次,之后会被置,所以无法指望后面接着使用ViewStub来控制布局。...先来看看布局,一个是主布局,里面只定义二个ViewStub,一个用来控制TextView一个用来控制ImageView,另外就是一个是显示文字的做的TextView布局,一个是ImageView而做的布局...android:layout_marginRight="5dip" android:layout="@layout/viewstub_demo_image_layout"/ </LinearLayout TextView

    1.8K31

    android内存优化

    一个合格的Android应用中,你通常能够用到两种上下文(Context):活动(Activity)和应用(Application)。...(state);     TextView label = new TextView(this);     label.setText("Leaks are bad");     setContentView...它泄露了当第一次屏幕角度改变时创建的第一个活动(Activity)。当一个Drawable被附加到一个View,这个View被设置drawable的一个回调。...这个例子是造成Context泄露的最简单的一个原因,你可以看一下我们主屏幕源码(查看unbindDrawables()方法)中是通过Activity销毁时设置保存过的Drawable的回调为来解决这个问题的...(context-activity) 如果你不能控制它们的生命周期,活动(Activity)中避免使用不是静态的内部类,使用静态类并且使用弱引用到活动(Activity)的内部。

    89170

    viewstub 的详细用法_pageinfo用法

    可以为ViewStub指定一个布局,Inflate布局的时候,只有 ViewStub会被初始化,然后当ViewStub被设置可见的时候,或是调用了ViewStub.inflate()的时候,ViewStub...ViewStub只能Inflate一次,之后ViewStub对象会被置。按句话说,某个被ViewStub指定的布局被Inflate后,就不会够再通过ViewStub来控制它了。...程序的运行期间,某个布局Inflate后,就不会有变化,除非重新启动。...先来看看布局,一个是主布局,里面只定义二个ViewStub,一个用来控制TextView一个用来控制ImageView,另外就是一个是显示文字的做的TextView布局,一个是ImageView而做的布局...layout_marginRight="5dip" android:layout="@layout/viewstub_demo_image_layout"/> TextView

    3.5K40

    Android传感器_传感器网络的基本功能

    1 2 proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); 继续之前,始终确保Sensor对象不是null...如果超过0.5f,我们可以很大程度上确保旋转是逆时针旋转的,并将背景颜色设置蓝色。类似地,如果它小于-0.5f,我们可以将背景颜色设置黄色。...但是,如果您将手机转到太多,屏幕方向将变为横向,您的活动重新启动。为了避免这种情况,我建议您在清单文件中设置screenOrientation活动portrait。...此外,我们不知道设备旋转之前或之后的实际角度。 通过使用旋转矢量传感器,让我们现在创建一个活动,其背景颜色只有旋转了特定角度时才会改变。...调用该getOrientation()方法之前,必须重新映射旋转矩阵的坐标系。更准确地说,您必须旋转旋转矩阵,使新坐标系的Z轴与原始坐标系的Y轴重合。

    1.2K30
    领券