将接口打包以启动新的 activity
Put interface in bundle to start a new activity
我需要从具有两个不同模型的 2 个不同屏幕启动一个 activity,但是,两个模型都有一些共享信息,这正是我在新 activity 中需要的信息。问题是我不能让这些模型从同一个父模型扩展,因为其中一个模型已经扩展了一个父模型。我考虑过创建一个包含共享方法的接口,但是如果我这样做了,那么如何将该接口放入启动下一个 activity 所需的包中?
我添加了一些简化的代码以阐明我的情况:
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();
}
我的问题是我需要启动一个 activity 捆绑包,其中包含两个模型之间的共享信息。所以,我想将 CustomInterface 放在一个包中。我该怎么做?
提前致谢。
So, I would like to put CustomInterface in a bundle
你可以让 CustomInterface
扩展 Parcelable
。例如
public interface CustomInterface extends Parcelable {
String getName();
}
这样 类 实现 CustomInterface
将必须实现 Parcelable
接口中定义的方法。如果实施正确,您将能够毫无问题地传递这些对象
创建一个单例class,然后不传就可以共享数据了:
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;
}
}
然后在你的 classes:
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();
}
}
我需要从具有两个不同模型的 2 个不同屏幕启动一个 activity,但是,两个模型都有一些共享信息,这正是我在新 activity 中需要的信息。问题是我不能让这些模型从同一个父模型扩展,因为其中一个模型已经扩展了一个父模型。我考虑过创建一个包含共享方法的接口,但是如果我这样做了,那么如何将该接口放入启动下一个 activity 所需的包中?
我添加了一些简化的代码以阐明我的情况:
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();
}
我的问题是我需要启动一个 activity 捆绑包,其中包含两个模型之间的共享信息。所以,我想将 CustomInterface 放在一个包中。我该怎么做?
提前致谢。
So, I would like to put CustomInterface in a bundle
你可以让 CustomInterface
扩展 Parcelable
。例如
public interface CustomInterface extends Parcelable {
String getName();
}
这样 类 实现 CustomInterface
将必须实现 Parcelable
接口中定义的方法。如果实施正确,您将能够毫无问题地传递这些对象
创建一个单例class,然后不传就可以共享数据了:
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;
}
}
然后在你的 classes:
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();
}
}