Java 在安卓系统中,我可以在活动之间移动对象而不需要意图吗?
重点是,从活动A到B,我每次都需要创建活动B,但我不会关闭活动A,因为当我从B返回到活动A时,我只是完成了活动B,但我不会创建活动A,因为我没有完成它。这就是我想要的 问题是当我尝试将数据和对象从活动B传递到A时。我不能使用intents和putExtra(),因为我不启动活动A,我只是使用onResume()恢复它 SharedReferences不允许我传递对象,所以有人知道是否有任何方法可以将对象从B传递到A吗 解决方案:Java 在安卓系统中,我可以在活动之间移动对象而不需要意图吗?,java,android,object,android-intent,Java,Android,Object,Android Intent,重点是,从活动A到B,我每次都需要创建活动B,但我不会关闭活动A,因为当我从B返回到活动A时,我只是完成了活动B,但我不会创建活动A,因为我没有完成它。这就是我想要的 问题是当我尝试将数据和对象从活动B传递到A时。我不能使用intents和putExtra(),因为我不启动活动A,我只是使用onResume()恢复它 SharedReferences不允许我传递对象,所以有人知道是否有任何方法可以将对象从B传递到A吗 解决方案: 感谢我一直在寻找的@brightstar@ThMBc@Avtar
感谢我一直在寻找的@brightstar@ThMBc@Avtar Guleira@Edy Bolos:)您可以使用startActivityForResult启动活动B,然后从它返回到A您的数据内部意图。您可以在此处找到示例:
您可以使用startActivityForResult启动活动B,然后从活动B返回到A以显示您的数据。您可以在此处找到示例: 是的,你能做到。 例如: 创建一个独立的java类
Class C {
public static ArrayList<YourObject> myList;
导入C类标题
}是的,你能做到。
例如:
创建一个独立的java类
Class C {
public static ArrayList<YourObject> myList;
导入C类标题
}使用单例类来存储和检索对象
public class Model {
private static Model model = null;
private Object myObject;
private Model() {}
public static Model getInstance() {
if (model == null) {
model = new Model();
}
return model;
}
public Object getMyObject(){
return myObject;
}
public setMyObject(Object myObject){
this.myObject = myObject;
}
}
当您在活动A中时,您将需要的对象存储在模型中,然后在活动B中检索它们。使用单例类来存储和检索对象
public class Model {
private static Model model = null;
private Object myObject;
private Model() {}
public static Model getInstance() {
if (model == null) {
model = new Model();
}
return model;
}
public Object getMyObject(){
return myObject;
}
public setMyObject(Object myObject){
this.myObject = myObject;
}
}
当您在活动A中时,您将需要的对象存储在模型中,然后在活动B中检索它们您可以创建另一个类,并创建将为您保存对象的静态属性。请看
Class Utils {
public static MyObject object;
public static int index;
}
像这样使用它
Utils.object = new MyObject();
Utils.index = 4;
您可以创建另一个类,并创建将为您保存对象的静态属性。请看
Class Utils {
public static MyObject object;
public static int index;
}
像这样使用它
Utils.object = new MyObject();
Utils.index = 4;
您不能根据场景传输对象,因为您没有直接调用活动A(表示startactivity)。您可以通过另一种方式实现此场景。您必须在活动B的应用程序类中设置/保存数据,然后才能在活动A onResume()方法中从应用程序类中获取数据,并执行任何您想要的操作。您不能根据您的场景传输对象,因为您没有直接调用活动A(表示startactivity)。您可以通过另一种方式实现此场景。您必须在Activity B的应用程序类中设置/保存数据,然后才能在Activity A onResume()方法中从应用程序类中获取数据并执行任何操作。遵循以下步骤:
因此,当活动B在ActivityResult上完成时,将调用活动A的结果。在该方法中,您将获得从活动B设置的意图。您可以执行您想执行的任何操作。对于不同的情况,有不同的方法。如果B中创建的对象将在应用程序范围内使用,则可以考虑将其赋给应用程序,以便每个活动可以通过达到它。
.getAppliction().getMyField()
请注意,在一般类中使用静态字段几乎可以归结为同一件事,但这遵循封装规则
如果启动B纯粹是为了创建结果对象,那么启动“结果”活动就是一条出路,正如brightstar所说:
.startActivityForResult()
如文件所述
从技术上讲,如果序列化对象(例如,将其转换为json对象并在prefs中传递字符串),也可以通过SharedPref传递对象,但这并不是真正的方式 不同的病例有不同的治疗方法。如果B中创建的对象将在应用程序范围内使用,则可以考虑将其赋给应用程序,以便每个活动可以通过达到它。
.getAppliction().getMyField()
请注意,在一般类中使用静态字段几乎可以归结为同一件事,但这遵循封装规则
如果启动B纯粹是为了创建结果对象,那么启动“结果”活动就是一条出路,正如brightstar所说:
.startActivityForResult()
如文件所述
从技术上讲,如果序列化对象(例如,将其转换为json对象并在prefs中传递字符串),也可以通过SharedPref传递对象,但这并不是真正的方式 请不要使用静态字段!!!这是一种非常糟糕的做法,您可能会遇到并发问题。
您可以通过使用startActivityForResult启动活动B来轻松完成请求,然后在活动B中,您可以通过覆盖onActivityResult方法来捕获结果,如下所述:请不要使用静态字段!!!这是一种非常糟糕的做法,您可能会遇到并发问题。
您可以通过使用startActivityForResult启动活动B来轻松完成请求,然后在活动B中,您可以通过覆盖onActivityResult方法来捕获结果,如下所述:u希望将对象从B传递到Y,如果可能的话,使用相同的系统将对象从A传递到Y,如果可能的话