Java 在安卓系统中,我可以在活动之间移动对象而不需要意图吗?

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

重点是,从活动A到B,我每次都需要创建活动B,但我不会关闭活动A,因为当我从B返回到活动A时,我只是完成了活动B,但我不会创建活动A,因为我没有完成它。这就是我想要的

问题是当我尝试将数据和对象从活动B传递到A时。我不能使用intents和putExtra(),因为我不启动活动A,我只是使用onResume()恢复它

SharedReferences不允许我传递对象,所以有人知道是否有任何方法可以将对象从B传递到A吗

解决方案:


感谢我一直在寻找的@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()方法中从应用程序类中获取数据并执行任何操作。

遵循以下步骤:

  • 只需使用startActivityForResult方法而不是 星触觉
  • 然后覆盖活动A中的onActivityResult
  • 当您想要完成或返回活动B时,只需使用intent传递数据 在setResult方法中
  • 有关完整文档,您可以查看以下链接:

    因此,当活动B在ActivityResult上完成时,将调用活动A的结果。在该方法中,您将获得从活动B设置的意图。然后您可以执行您想执行的任何操作。

    遵循以下步骤:

  • 只需使用startActivityForResult方法而不是 星触觉
  • 然后覆盖活动A中的onActivityResult
  • 当您想要完成或返回活动B时,只需使用intent传递数据 在setResult方法中
  • 有关完整文档,您可以查看以下链接:


    因此,当活动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,如果可能的话