我如何通过一个自定义类型的对象从一个活动到另一个使用类意图的putExtra()方法?
当前回答
使用谷歌的Gson库,您可以将object传递给另一个活动。实际上,我们将以json字符串的形式转换对象,传递给其他活动后,我们将再次重新转换为这样的对象
考虑这样一个bean类
public class Example {
private int id;
private String name;
public Example(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我们需要传递Example类的对象
Example exampleObject=new Example(1,"hello");
String jsonString = new Gson().toJson(exampleObject);
Intent nextIntent=new Intent(this,NextActivity.class);
nextIntent.putExtra("example",jsonString );
startActivity(nextIntent);
对于读取,我们需要在NextActivity中做相反的操作
Example defObject=new Example(-1,null);
//default value to return when example is not available
String defValue= new Gson().toJson(defObject);
String jsonString=getIntent().getExtras().getString("example",defValue);
//passed example object
Example exampleObject=new Gson().fromJson(jsonString,Example .class);
在gradle中添加这个依赖
compile 'com.google.code.gson:gson:2.6.2'
其他回答
在臂膀上
在build.gradle中添加kotlin扩展。
apply plugin: 'kotlin-android-extensions'
android {
androidExtensions {
experimental = true
}
}
然后像这样创建数据类。
@Parcelize
data class Sample(val id: Int, val name: String) : Parcelable
传递带有意图的对象
val sample = Sample(1,"naveen")
val intent = Intent(context, YourActivity::class.java)
intent.putExtra("id", sample)
startActivity(intent)
获取带有意图的对象
val sample = intent.getParcelableExtra("id")
使用谷歌的Gson库,您可以将object传递给另一个活动。实际上,我们将以json字符串的形式转换对象,传递给其他活动后,我们将再次重新转换为这样的对象
考虑这样一个bean类
public class Example {
private int id;
private String name;
public Example(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我们需要传递Example类的对象
Example exampleObject=new Example(1,"hello");
String jsonString = new Gson().toJson(exampleObject);
Intent nextIntent=new Intent(this,NextActivity.class);
nextIntent.putExtra("example",jsonString );
startActivity(nextIntent);
对于读取,我们需要在NextActivity中做相反的操作
Example defObject=new Example(-1,null);
//default value to return when example is not available
String defValue= new Gson().toJson(defObject);
String jsonString=getIntent().getExtras().getString("example",defValue);
//passed example object
Example exampleObject=new Gson().fromJson(jsonString,Example .class);
在gradle中添加这个依赖
compile 'com.google.code.gson:gson:2.6.2'
最简单的方法是在item是字符串的情况下使用以下代码:
intent.putextra("selected_item",item)
接收:
String name = data.getStringExtra("selected_item");
我发现最简单的解决办法是… 创建带有getter和setter的静态数据成员的类。
从一个活动中设置并从另一个活动中获取该对象。
活动
mytestclass.staticfunctionSet("","",""..etc.);
活动b
mytestclass obj= mytestclass.staticfunctionGet();
Intent i = new Intent();
i.putExtra("name_of_extra", myParcelableObject);
startACtivity(i);
推荐文章
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- 安装APK时出现错误
- 碎片中的onCreateOptionsMenu
- TextView粗体通过XML文件?
- 如何使线性布局的孩子之间的空间?
- DSL元素android.dataBinding。enabled'已过时,已被'android.buildFeatures.dataBinding'取代
- ConstraintLayout:以编程方式更改约束
- PANIC: AVD系统路径损坏。检查ANDROID_SDK_ROOT值
- 如何生成字符串类型的buildConfigField
- Recyclerview不调用onCreateViewHolder
- Android API 21工具栏填充
- Android L中不支持操作栏导航模式
- 如何在TextView中添加一个子弹符号?
- PreferenceManager getDefaultSharedPreferences在Android Q中已弃用
- 在Android Studio中创建aar文件