我创建了一个Telnet类,并在Mainactivity上对其进行了实际操作。现在我想在项目的所有其他活动中访问MainActivity中的onnetized telnet。 我正在做的是创建一个get函数:
public Telnet getMyTelnet() {
return telnet;
}
然后在任何我想要的地方打电话。 当我把它称为片段时,我这样做:
MainActivity activity = (MainActivity) getActivity();
telnet = activity.getMyTelnet();
问题是当我在另一个活动中需要它时。我该怎么做? 我试过这个,但没有运气。
MainActivity a = new MainActivity ();
telnet = a.getTelnet();
答案 0 :(得分:1)
在android中有两种方法可以在Activities之间实现发送和接收对象: 他们必须:
您需要实施Parcelabel 并将以下方法添加到类
包含参数的构造函数
@Override
public void writeToParcel(Parcel dest, int flags) {
// write each field into the parcel. When we read from parcel, they
// will come back in the same order
dest.writeString(strVar); // to write your string variables
dest.writeInt(intVar); // to write your int variables
}
覆盖writeToParcel方法
private void readFromParcel(Parcel in) {
strVar= in.readString();
intVar= in.readInt();
}
从包裹中读取
的方法public static final Parcelable.Creator CREATOR =
new Parcelable.Creator() {
public Telnet createFromParcel(Parcel in) {
return new Telnet(in);
}
public Telnet[] newArray(int size) {
return new Telnet[size];
}
};
@Override
public int describeContents() {
return 0;
}
包裹创建者
Telnet obj = new Telnet();
// Set values etc.
Intent i = new Intent(this, MyActivity.class);
i.putExtra("your.package.Telnet", obj);
startActivity(i);
然后您的Telnet课程已准备好转移到其他活动。
现在使用它: 在主要行为中:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle b = getIntent().getExtras();
Telnet obj =
b.getParcelable("your.package.Telnet");
}
并在第二个活动中执行:
{{1}}
答案 1 :(得分:1)
在MyActivity类中创建Telnet实例为static。并且正确的方法
punlic static Telnet telnet;
onCreate() {
//initialise telnet
}
onResume() {
//initialise telnet if null;
}
onStop() {
//make telnet null
}
public static Telnet getTelnet() {
return telnet;
让我知道它是否有效