Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从第二个activity到调用第二个activity的mainActivity检索可包裹对象的值_Android_Android Intent_Parcelable - Fatal编程技术网

Android 从第二个activity到调用第二个activity的mainActivity检索可包裹对象的值

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

我有一个实现Parcelable类的类。从主活动中,我传递一个可包裹的对象。在第二个活动中,我检索objet并使用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");

}
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()
(在第一个活动中)返回数据

请参阅文档中的