java - 无法将 TextView 转换为 java.io.Serializable
问题描述
我试图在将布局更改为另一个布局或更改屏幕方向时保存我的文本视图状态:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("GeneratedNumber", (Serializable) generatedNumber);//I get the error here
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
generatedNumber = (TextView) savedInstanceState.getSerializable("GeneratedNumber");
}
但我得到一个错误
java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView 不能转换为 java.io.Serializable
还有 GeneratedNumber: 是generatedNumber
XML 文件中的 TextView id。这是日志:
09-07 18:33:41.478 9406-9406/maskedman.counter E/AndroidRuntime: 致命异常: 主进程: maskedman.counter, PID: 9406 java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView 无法转换到 java.io.Serializable 在 maskedman.counter.CounterActivity.onSaveInstanceState(CounterActivity.java:34) 在 android.app.Activity.performSaveInstanceState(Activity.java:1474) 在 android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1317 ) 在 android.app.ActivityThread.callCallActivityOnSaveInstanceState(ActivityThread.java:5393) 在 android.app.ActivityThread.performStopActivityInner(ActivityThread.java:4695) 在 android.app.ActivityThread.handleStopActivity(ActivityThread.java:4769) 在 android.app .ActivityThread。在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1823) 在 android.os.Looper.loop( Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7224) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run( ZygoteInit.java:1230) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
有谁能够帮助我 ?
解决方案
问题是您尝试将文本视图存储为可序列化的,这是错误的。
检查这个:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Save UI state changes to the savedInstanceState.
// This bundle will be passed to onCreate if the process is
// killed and restarted.
savedInstanceState.putInt("GeneratedNumber", generatedNumber);// generatedNumber is integer
// etc.
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
generatedNumber = savedInstanceState.getInt("GeneratedNumber");
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**
*
* layout initailization
*/
if (savedInstanceState != null) {
mTextView.setText(String.valueOf(generatedNumber));
}
}
我希望这对你有用。
推荐阅读
- android - 在应用进程被杀死之前,如何在 ViewModel 的 onCleared 方法中为 SavedStateHandle 提供的 LiveData 设置特定值
- c++ - Asp.Net Core Dependency Injection 不起作用,如果它是从非托管/本机启动的
- .net - 在 Linux 上运行 .NET Core 应用程序时,GDI+ 中出现一般错误
- azure - Azure 更新管理:分阶段推出
- javascript - MongoDB 从查询参数中查找
- java - 如何在 FXML 文件中使用脚本?
- python-3.x - Python3双向网络通信?套接字、IPC、RPC,选项太多
- bash - 有没有办法让 bash 变量在我每次使用时都“返回”不同的值?
- vba - 如何以编程方式将发光效果(大小和颜色)设置为 PowerPoint 中的文本?
- sql - 如何让 JSON_OBJECT_AGG 使用整数作为对象键?