【问题标题】:Passing Object with multiple parts from one activity to another将具有多个部分的对象从一个活动传递到另一个活动
【发布时间】:2014-12-10 02:43:27
【问题描述】:

您好,我有一个要求,例如人员详细信息,因为我有多个详细信息,例如个人,教育,工作,例如在第一个活动中,我输入个人详细信息,然后是教育,然后是一个接一个的工作,我如何维护所有详细信息在单个对象中并通过应用程序请帮助我。

【问题讨论】:

  • 您基本上回答了您自己的问题——将这些值放入您创建的类的对象中!
  • 我不知道该怎么做,这就是为什么要提出一些建议。请尝试理解而不给出否定点击。谢谢

标签: android object android-intent android-activity


【解决方案1】:

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


Personal.class

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);
    } 
}

教育类

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

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

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");
        } 
    } 
}

{EDIT-1}

{EDIT-2}

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

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

【讨论】:

  • 感谢您的回复是使用全局对象将所有详细信息保存在一个 userdetails 对象中并仅将所有详细信息更新到该对象的任何方式
  • 感谢知识共享。我对网络连接有疑问。在提交之前向服务器提交数据时检查网络是否连接,如果没有网络,则显示用户警报设置互联网。例如我连接到实时工作的 wifi 网络工作正常。如果网络的某些问题没有响应但设备连接到 wifi,我希望你能理解我的问题。在这种情况下 wifi 已连接但不活跃,我如何显示警报例如这种情况在 facebook..could not load data like that
【解决方案2】:

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

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... 中传递对象...

Intent i = new Intent(getApplicationContext(), ACTIVITY_TO_START.class);
i.putExtra("extra_key", new MyParcelable());
startActivity(i);

检索开始活动的对象...

Bundle extras = getIntent().getExtras();

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

【讨论】:

    猜你喜欢
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多