java - 保存屏幕旋转数据

标签 java android xml android-layout android-studio

每当屏幕旋转时,我都试图将存储在名为 Memo 的变量中的数据保存起来。当我这样做时,我不确定如何保存变量。这是我的 Java 和 xml。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

公共(public)类 MainActivity 扩展 AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final EditText Input = (EditText) findViewById(R.id.inputLine);
    final TextView Memo = (TextView) findViewById(R.id.memo);
    final Button button = (Button) findViewById(R.id.btnSubmit);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            final String sting = Input.getText().toString();
            Memo.setText(sting);
        }
    });
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putSerializable("string",string);
    // Save UI state changes to the savedInstanceState.
    // This bundle will be passed to onCreate if the process is
    // killed and restarted.
    // etc.
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    // Restore UI state from the savedInstanceState.
    // This bundle has also been passed to onCreate.
    String String = savedInstanceState.getString(string);
}
}

这是我的 xml,用于展示我的项目

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="edu.dtcc.bwharto9.rotationslab.MainActivity">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Please enter your memo below, then press Submit!"
    android:id="@+id/textView"
    android:layout_marginTop="28dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textMultiLine"
    android:ems="10"
    android:id="@+id/inputLine"
    android:layout_marginTop="40dp"
    android:hint="Enter your memo here"
    android:layout_below="@+id/textView"
    android:layout_centerHorizontal="true" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Submit"
    android:id="@+id/btnSubmit"
    android:layout_below="@+id/inputLine"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="31dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/memo"
    android:layout_below="@+id/btnSubmit"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="123dp" />
</RelativeLayout>

最佳答案

onClick() 方法中,您执行以下操作:

final String sting = Input.getText().toString(); 

而是删除 final String 以使 sting 全局化,如下所示:

sting = Input.getText().toString();

然后,确保在您的 Activity 中将字符串声明为全局字符串,在任何方法之外,如下所示:

private String sting = "";

然后,在 onRestoreInstanceState(Bundle savedInstanceState) 中执行以下操作:

sting = savedInstanceState.getString("string");

同样在 onSaveInstanceState(Bundle savedInstanceState) 上替换

savedInstanceState.putSerializable("string",string);

与:

savedInstanceState.putString("string",sting);

关于java - 保存屏幕旋转数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36099530/

相关文章:

android - 在 Android 中的谷歌地图位置上设置名称和标题

c# - 为什么 XmlReader 的默认编码与 XmlTextReader 的默认编码行为不同?

javascript - 解析 xml 以获取要返回给 python 的方程

java - 如何获取过滤后的extendedDataTable的选中行?

android - 在android中找不到列item_name

java - Kubernetes 无法通过 Github 从 Docker hub 部署简单镜像

android - 为什么我的应用程序将自己注册为浏览器?

java - 删除 fragment 周围的白色边框

JavaFX - 如何将 IntegerProperty 中的 RGB 值绑定(bind)到 ColorPicker?

java - 是否可以创建一个每个键都指向相同值的映射?