Android 从第二个activity到调用第二个activity的mainActivity检索可包裹对象的值
我有一个实现Parcelable类的类。从主活动中,我传递一个可包裹的对象。在第二个活动中,我检索objet并使用objet更改数据。一切都好。但问题是当我需要检索从第二个活动到主活动的更改时。我不知道我该怎么做 以下是主要活动中的调用:Android 从第二个activity到调用第二个activity的mainActivity检索可包裹对象的值,android,android-intent,parcelable,Android,Android Intent,Parcelable,我有一个实现Parcelable类的类。从主活动中,我传递一个可包裹的对象。在第二个活动中,我检索objet并使用objet更改数据。一切都好。但问题是当我需要检索从第二个活动到主活动的更改时。我不知道我该怎么做 以下是主要活动中的调用: public class MainActivity extends Activity { Tgestion Tges= new Tgestion(); Button buttonI,buttonM,buttonB,buttonD,buttonS; @Ove
public class MainActivity extends Activity {
Tgestion Tges= new Tgestion();
Button buttonI,buttonM,buttonB,buttonD,buttonS;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addListenerOnButton();
}
public void addListenerOnButton() {
final Context context = this;
buttonI = (Button) findViewById(R.id.buttonIntroducir);
buttonI.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(context, IntroducirPatron.class);
intent.putExtra("com.example.sistemacontrasena.gestion", Tges);
startActivity(intent);
}
});
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_introducir_patron);
// --- Obtenemos objeto Parcelable desde el Intent
this.gestion=getIntent().getParcelableExtra("com.example.sistemacontrasena.gestion");
}
Tges是一个实现parcelable类的objet。
在第二项活动中:
public class MainActivity extends Activity {
Tgestion Tges= new Tgestion();
Button buttonI,buttonM,buttonB,buttonD,buttonS;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addListenerOnButton();
}
public void addListenerOnButton() {
final Context context = this;
buttonI = (Button) findViewById(R.id.buttonIntroducir);
buttonI.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(context, IntroducirPatron.class);
intent.putExtra("com.example.sistemacontrasena.gestion", Tges);
startActivity(intent);
}
});
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_introducir_patron);
// --- Obtenemos objeto Parcelable desde el Intent
this.gestion=getIntent().getParcelableExtra("com.example.sistemacontrasena.gestion");
}
在此之后,我设置了一些更改,例如this.gestion.setSecret(value);
例如,当我关闭第二个活动时,在主活动中,我不知道如何使用我输入的值检索这个.gestion.getSecret()。我该怎么做
可包裹的类别为:
import android.os.Parcel;
import android.os.Parcelable;
public class Tgestion implements Parcelable{
private String[] secret;
public Tgestion(){
this.secret=new String[2];
}
/**
* Constructor Tgestion para parcel.
* @param source
*/
private Tgestion(Parcel source) {
this.secret=new String[2];
readFromParcel(source);
}
public void setSecret(String[] s){
for (int i=0;i<this.secret.length;i++){
this.secret[i]=s[i];
}
}
public String[] getSecret(){
return this.secret;
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel destino, int flags) {
// TODO Auto-generated method stub
destino.writeStringArray(this.secret);
}
private void readFromParcel(Parcel in){
in.readStringArray(this.secret);
}
public static final Parcelable.Creator<Tgestion> CREATOR = new Parcelable.Creator<Tgestion>() {
@Override
public Tgestion createFromParcel(Parcel source) {
return new Tgestion(source);
}
@Override
public Tgestion[] newArray(int size) {
return new Tgestion[size];
}
};
}
导入android.os.packet;
导入android.os.Parcelable;
公共类Tgestion实现了Parcelable{
私有字符串[]秘密;
公共测试(){
this.secret=新字符串[2];
}
/**
*建造商估计部分包裹。
*@param源
*/
专用Tgestion(地块源){
this.secret=新字符串[2];
readFromParcel(来源);
}
public void setSecret(字符串[]s){
对于(int i=0;i您不能只更改包裹
,而期望第一个活动看到这些更改。包裹被序列化和反序列化,这意味着您有一个新的副本
您应该使用startActivityForResult()
、setResult()
(在第二个活动中)和onActivityResult()
(在第一个活动中)返回数据
请参见文档中的。您不能仅更改包裹
,而期望第一个活动看到这些更改。包裹已序列化和反序列化,这意味着您有一个新副本
您应该使用startActivityForResult()
、setResult()
(在第二个活动中)和onActivityResult()
(在第一个活动中)返回数据
请参见文档中的。您不能仅更改包裹
,而期望第一个活动看到这些更改。包裹已序列化和反序列化,这意味着您有一个新副本
您应该使用startActivityForResult()
、setResult()
(在第二个活动中)和onActivityResult()
(在第一个活动中)返回数据
请参见文档中的。您不能仅更改包裹
,而期望第一个活动看到这些更改。包裹已序列化和反序列化,这意味着您有一个新副本
您应该使用startActivityForResult()
、setResult()
(在第二个活动中)和onActivityResult()
(在第一个活动中)返回数据
请参阅文档中的