GCM*_*4IB 0 android android-activity
我正在开发一个由多个Activity组成的Android应用程序,并且必须在它们之间传递ab Object,但是由于该对象的类未实现可序列化,因此无法通过intent传递它,该怎么办?我无法修改班级的源代码谢谢:)
public class MyClass { //stuff }
//I can't modify this source code
MyClass m = new MyClass(); //object I have to pass
Run Code Online (Sandbox Code Playgroud)
假设有一个名为StudentDataObject的数据对象类,具有某些数据类型。
StudentDataObject studentDataObject = new StudentDataObject();
Gson gson = new Gson();
String studentDataObjectAsAString = gson.toJson(studentDataObject);
Run Code Online (Sandbox Code Playgroud)
现在,我们使用意图将其从一个活动传递到另一个活动。
Intent intent = new Intent(FromActivity.this, ToActivity.class);
intent.putExtra("MyStudentObjectAsString", studentDataObjectAsAString);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
现在我们处于新的活动中,我们使用下面的行在此处获取该对象。
Gson gson = new Gson();
String studentDataObjectAsAString = getIntent().getStringExtra("MyStudentObjectAsString");
StudentDataObject studentDataObject = gson.fromJson(studentDataObjectAsAString, StudentDataObject.class);
Run Code Online (Sandbox Code Playgroud)
活动本身知道从哪里调用我,因此我们可以直接编写getIntent()方法。
在这里,我们只需要添加一个GSON依赖项, 我们可以使用以下build.gradle文件中的行来添加它。
compile 'com.google.code.gson:gson:2.6.2'
Run Code Online (Sandbox Code Playgroud)
一件事是将StudentDataObject实现为Parcelable,如果显示错误,则只需按alt + Enter并实现方法。尝试一次,希望它能起作用。
StudentDataObject的示例示例应类似于:-
public class StudentDataObject implements Parcelable {
// fields
//empty constructor
//parameterised constructor
//getters and setters
//toString method
//last implement some Parcelable methods
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8575 次 |
| 最近记录: |