首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将具有多个部分的对象从一个活动传递到另一个活动

将具有多个部分的对象从一个活动传递到另一个活动
EN

Stack Overflow用户
提问于 2014-10-15 14:00:48
回答 2查看 533关注 0票数 0

嗨,我有一个像人的详细信息的要求,我有像个人,教育,工作一样的多个细节,在第一个活动我输入个人详细信息,然后教育,然后一个接一个这样的工作,我如何才能保持在单一对象和通过应用程序的所有细节,请帮助我。

EN

回答 2

Stack Overflow用户

发布于 2014-10-15 14:08:31

请注意,您需要在Intent中绑定一个对象,该对象必须实现Parcelable接口。下面是取自Parcelable documentation的一个常见实现...

代码语言:javascript
复制
public class MyParcelable implements Parcelable {
     private int mData;

     public int describeContents() {
         return 0;
     }

     public void writeToParcel(Parcel out, int flags) {
         out.writeInt(mData);
     }

     public static final Parcelable.Creator<MyParcelable> CREATOR
             = new Parcelable.Creator<MyParcelable>() {
         public MyParcelable createFromParcel(Parcel in) {
             return new MyParcelable(in);
         }

         public MyParcelable[] newArray(int size) {
             return new MyParcelable[size];
         }
     };

     private MyParcelable(Parcel in) {
         mData = in.readInt();
     }
 }

完成后,只需在Intent中传递对象即可。

代码语言:javascript
复制
Intent i = new Intent(getApplicationContext(), ACTIVITY_TO_START.class);
i.putExtra("extra_key", new MyParcelable());
startActivity(i);

要检索启动活动的对象...

代码语言:javascript
复制
Bundle extras = getIntent().getExtras();

if(extras != null && extras.containsKey("extra_key"))
{
    MyParcelable p = (MyParecelable)extras.getParcelable("extra_key");
}
票数 0
EN

Stack Overflow用户

发布于 2014-10-15 14:32:04

简单的解决方案:使用此的意图

Personal.class

代码语言:javascript
复制
public class Personal extends Activity {

    @Override 
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.personal);

        Intent i = new Intent(getApplicationContext(), Educational.class);
        i.putExtra("personal_details",<-get data from object->);
        startActivity(i);
    } 
}

Educational.class

代码语言:javascript
复制
public class Personal extends Activity {

    @Override 
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.personal);

        String personal_details; 

        Bundle extras = getIntent().getExtras();
        if (extras != null) {
        personal_details= extras.getString("personal_details");
        } 

        Intent i = new Intent(getApplicationContext(), educational.class);
        i.putExtra("personal_details",personal_details);
        i.putExtra("educational_details",<-get data from object->);
        startActivity(i);
    } 
}

Job.class

代码语言:javascript
复制
public class Personal extends Activity {

    @Override 
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.personal);

        String personal_details,educational_details; 

        Bundle extras = getIntent().getExtras();
        if (extras != null) {
        personal_details= extras.getString("personal_details");
        educational_details= extras.getString("educational_details");
        } 

        Intent i = new Intent(getApplicationContext(), FinalResult.class);
        i.putExtra("personal_details",personal_details);
        i.putExtra("educational_details",educational_details);
        i.putExtra("job_details",<-get data from object->);
        startActivity(i);
    } 
}

FinalResult.class

代码语言:javascript
复制
public class Personal extends Activity {

    @Override 
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.personal);
        String personal_details,educational_details,job_details; 

        Bundle extras = getIntent().getExtras();
        if (extras != null) {
        personal_details= extras.getString("personal_details");
        educational_details= extras.getString("educational_details");
        job_details= extras.getString("job_details");
        } 
    } 
}

{编辑-1}

看一下我在

  • You中的一个答案
  • 可以使用application variableshared preferences实现它,但我不推荐它。!
  • 尝试将其存储在POJO(普通老JAVA类)

{编辑-2}

嗯,如果我正确理解了您的问题::您已连接到互联网(无线、有线、...等)基本上,当没有网络连接时,您正在尝试显示一个对话框!你可以借助Broadcast receivers ..。

尝试此命令::将广播接收器设置为在没有网络连接时触发意图...编写代码来捕获该意图并弹出dialog ...在此对话框中,为用户提供重新连接连接的选项!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26375490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档