重点是,从活动A到BI需要每次都创建活动B,但我不会关闭活动A,因为当我从B返回活动A时,我只是完成了活动B但我没有&#39 ;创建活动A因为我没有完成它。这就是我想要的。
问题是当我尝试将数据和对象从活动B传递到A.我不能使用意图和putExtra(),因为我没有启动活动A,我只是用onResume恢复它( )。
SharedPreferences不允许我传递对象,所以有人知道是否有任何方法可以将对象从B传递给A?
解决方案: http://www.javatpoint.com/android-startactivityforresult-example
感谢@brightstar @ThMBc @Avtar Guleira @Edy Bolos,我正在寻找:)
答案 0 :(得分:3)
您可以使用startActivityForResult启动活动B,然后从其返回到您的意图内的数据。你可以在这里找到例子:
http://developer.android.com/reference/android/app/Activity.html
答案 1 :(得分:1)
针对不同情况有不同的方法。如果在B中创建的对象将在应用程序范围内使用,您可以考虑将其提供给应用程序,以便每个活动都可以通过
来实现。.getAppliction().getMyField()
请注意,在一般类中使用静态字段几乎可以归结为同样的事情,但这遵循封装规则。
如果B仅仅是为了创建结果对象而启动,那么开始一个结果活动就是要走的路,正如brightstar所说:
.startActivityForResult()
中所述
从技术上讲,如果你对它们进行序列化(例如将它们转换为json对象并在prefs中传递一个字符串),你也可以通过sharedPrefs传递对象,但这并不是人们这样做的方式。
答案 2 :(得分:0)
是的,你可以做到。 例如: 创建一个独立的java类
Class C {
public static ArrayList<YourObject> myList;
}
enter code here
Class B {
myList.add()
}
Class A{
myList.get(index)
}
答案 3 :(得分:0)
使用Singleton-Class存储和检索对象。
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中检索它们
答案 4 :(得分:0)
您可以创建另一个类并创建静态属性,这些属性将保留您的对象。请看。
Class Utils {
public static MyObject object;
public static int index;
}
像
一样使用它Utils.object = new MyObject();
Utils.index = 4;
答案 5 :(得分:0)
您不能按照您的方案传输对象,因为您不直接调用活动A(意味着开始活动)。您可以通过其他方式实现此方案。您必须在Activity B中设置/保存Application类中的数据,然后您可以在activiy A onResume()方法中从应用程序类获取数据并执行您想要的任何操作。
答案 6 :(得分:0)
按照以下步骤操作:
有关完整文档,您可以查看以下链接: Getting a Result from an Activity
因此,当活动B完成时,OnActivityResult将被调用活动A.在这个方法中,你将获得你从活动B设置的意图。你可以随心所欲地做任何人。
答案 7 :(得分:0)
请不要使用静态字段!!!这真的很糟糕,你可能会遇到并发问题。 您可以通过使用startActivityForResult启动活动B来轻松完成您的请求,然后在活动B中,您可以通过覆盖onActivityResult方法来捕获结果,如下所述:http://developer.android.com/reference/android/app/Activity.html#StartingActivities