我需要从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放在一个包中。我怎么能这样做?
提前致谢。
答案 0 :(得分:15)
所以,我想把CustomInterface放在一个包
中
您可以让CustomInterface
延长Parcelable
。 E.g。
public interface CustomInterface extends Parcelable {
String getName();
}
这样实现CustomInterface
的类必须实现Parcelable
接口中定义的方法。如果正确实现,您将能够毫无问题地传递这些对象
答案 1 :(得分:0)
创建一个单例类,然后您可以在不传递数据的情况下共享数据:
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();
}
}