10

我需要从具有两个不同模型的 2 个不同屏幕开始一项活动,但是,这两个模型都有一些共享信息,这是我在新活动中需要的信息。问题是我不能让这些模型从同一个父级扩展,因为其中一个模型已经扩展了一个父级。我曾考虑过创建一个包含共享方法的接口,但是,如果我这样做了,那么如何将该接口放入启动下一个活动所需的包中?

我添加了一些简化的代码以澄清我的情况:

public class A extends Model implements CustomInterface {
    String name;
    String address;

    public String getName(){
        return name;
    }

    public String getAddress() {
        return address;
    }
}

public class B implements CustomInterface {
    String name;

    public String getName() {
        return name;
    }
}

public interface CustomInterface {
    String getName();
}

我的问题是我需要使用包含两个模型之间共享信息的捆绑包来启动一个活动。所以,我想把 CustomInterface 放在一个包中。我怎么能那样做?

提前致谢。

4

2 回答 2

17

所以,我想把 CustomInterface 放在一个包中

你可以让CustomInterface扩展Parcelable。例如

 public interface CustomInterface extends Parcelable {
     String getName();
 }

这样实现的类CustomInterface将必须实现Parcelable接口中定义的方法。如果实施正确,您将能够毫无问题地传递这些对象

于 2016-01-13T19:10:49.543 回答
-1

创建一个单例类,然后您可以在不传递数据的情况下共享数据:

public class MySingleton
{
    private static MySingleton instance;

    public String customVar;

    public static MySingleton getInstance()
    {
        if (instance == null)
        {
            // Create the instance
            instance = new MySingleton();
        }
        // Return the instance
        return instance;
    }

    private MySingleton()
    {
        // Constructor hidden because this is a singleton
    }

    public void getSomeData()
    {
        return something;
    }

    public void getSomeOtherData()
    {
        return somethingelse;
    }
}

然后在您的课程中:

public class A extends Model {
    String name;
    String address;

    public String getName(){
        return name;
    }

    public String getAddress() {
        return address;
    }

    public String doSomethingWithSharedData(){
         MySingleton model = MySingleton.getInstance();
         String somedata = model.getSomeData();
    }
}

public class B {
    String name;


    public String getName() {
        return name;
    }

    public String doSomethingDifferentWithSharedData(){
         MySingleton model = MySingleton.getInstance();
         String somedata = model.getSomeOtherData();
    }
}
于 2016-01-13T19:23:28.390 回答