如何通过对象到一个新的活动? (如何注入) [英] How to pass object to a new Activity? (how to inject)
问题描述
我想传递一个对象(不是数据!)来实现一些接口(例如IConnect的)到一个新的活动。 活动将调用这个对象的一些方法来获取数据。
如何做到这一点? (序列化和Parcelable是对象/数据/结构我想,不为对象/界面,做的东西)。
我应该传递一个类名的意图演员?然后活动将创建所需的对象? 如何注入对象(几个不同的类,它实现的IConnect)到一个新的活动?
MyParcelable.java
公共类MyParcelable实现Parcelable {
私人字符串MVAL;
公共MyParcelable(字符串VAL){
MVAL = VAL;
}
公共静态最终Parcelable.Creator< MyParcelable> CREATOR =
新Parcelable.Creator< MyParcelable>(){
公共MyParcelable createFromParcel(包裹中){
字符串s = in.readString();
返回新MyParcelable(S);
}
公共MyParcelable [] newArray(INT尺寸){
返回新MyParcelable【尺寸】;
}
};
公共字符串的getValue(){
返回MVAL;
}
公共无效writeToParcel(地块P){
p.writeString(MVAL);
}
公共字符串的toString(){
返回MyParcelable [VAL =+ MVAL +];
}
}
SendParcelable.java
公共类SendParcelable延伸活动{
@覆盖
公共无效的onCreate(包冰柱){
super.onCreate(冰柱);
意向意图=新的意图(这一点,ReceiveParcelable.class);
Parcelable P =新MyParcelable(测试);
intent.putExtra(myparcelable,p)的;
Log.i(ParcelDemo,发送Parcelable);
startActivity(意向);
}
}
ReceiveParcelable.java
公共类ReceiveParcelable延伸活动{
@覆盖
公共无效的onCreate(包冰柱){
super.onCreate(冰柱);
意向意图= getIntent();
Parcelable p值= intent.getParcelableExtra(myparcelable);
Log.i(ParcelDemo,得到Parcelable+ P);
如果(P = NULL和放大器;!&放,P的instanceof MyParcelable和放大器;&安培;
((MyParcelable)P).getValue()。等于(测试)){
Log.i(ParcelDemo,成功!);
} 其他 {
Log.i(ParcelDemo,失败!);
}
}
}
希望这有助于!
I want to pass an object (not data!) that implements some interface (ex. IConnect ) to a new Activity. Activity will call some methods from this object to acquire data.
How to do that? (Serializable and Parcelable are for objects/data/structures i guess, not for objects/interfaces that 'DO' something).
Should I pass a class name in Intent extras? and then Activity will create desired object? How to inject an object (a few different classes that implements IConnect) to a new Activity ?
MyParcelable.java
public class MyParcelable implements Parcelable {
private String mVal;
public MyParcelable(String val) {
mVal = val;
}
public static final Parcelable.Creator<MyParcelable> CREATOR =
new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
String s = in.readString();
return new MyParcelable(s);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
public String getValue() {
return mVal;
}
public void writeToParcel(Parcel p) {
p.writeString(mVal);
}
public String toString() {
return "MyParcelable[val=" + mVal + "]";
}
}
SendParcelable.java
public class SendParcelable extends Activity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Intent intent = new Intent(this, ReceiveParcelable.class);
Parcelable p = new MyParcelable("test");
intent.putExtra("myparcelable", p);
Log.i("ParcelDemo", "Sending Parcelable");
startActivity(intent);
}
}
ReceiveParcelable.java
public class ReceiveParcelable extends Activity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Intent intent = getIntent();
Parcelable p = intent.getParcelableExtra("myparcelable");
Log.i("ParcelDemo", "Got Parcelable " + p);
if (p != null && p instanceof MyParcelable &&
((MyParcelable) p).getValue().equals("test")) {
Log.i("ParcelDemo", "Success!");
} else {
Log.i("ParcelDemo", "Failure!");
}
}
}
Hope this helps!
这篇关于如何通过对象到一个新的活动? (如何注入)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!