Question

I am using Serializable Interface for this time. I want to pass ArrayList from one activity to another activity,but it gives me this error "unable to marshal value", the code is,

//Sending Activity:

    public class LogIn extends Activity implements OnClickListener
    {
    ProgressDialog pd;
    ImageButton logIn,registr;
    EditText userName,Password;
     public static String usrName,passwrd;
     String TAG=LogIn.class.getName();
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        userName=(EditText)findViewById(R.id.logIn_etuserName);
        Password=(EditText)findViewById(R.id.logIn_etpaswrd);
        logIn=(ImageButton)findViewById(R.id.logIn_B_logIn);
        registr=(ImageButton)findViewById(R.id.logIn_B_registration);       
        logIn.setOnClickListener(this);
        registr.setOnClickListener(this);

    }
    @Override
    public void onClick(View v)
    {

        String respns="";
        switch (v.getId())
        {
        case R.id.logIn_B_logIn:

            try 
            {
                usrName=userName.getText().toString();
                passwrd=Password.getText().toString();
                        if(usrName.contentEquals("") && passwrd.contentEquals(""))
                {
                    Toast.makeText(getApplicationContext(), "Enter       userName",Toast.LENGTH_LONG).show();
                }
      //                        else if(passwrd.contentEquals(""))
    //              {
    //                  Toast.makeText(getApplicationContext(), "Enter      password",Toast.LENGTH_LONG).show();
    //              }
                else
                {
                    pd=ProgressDialog.show(LogIn.this, "LogIn", "Logging");
                    new Athenticate().execute();


                }
            } catch (Exception e) 
            {
                e.printStackTrace();
            }
            break;
        case R.id.logIn_B_registration:
            Intent i=new Intent(LogIn.this,Registration.class);
            startActivity(i);
           break;
           default:
            break;
        }

    }

    private class Athenticate extends AsyncTask<String, Void,ArrayList<SettrGettr> >
    {
        ArrayList<SettrGettr> lst;

    @Override
    protected ArrayList<SettrGettr> doInBackground(String... params) 
    {
        lst=(ArrayList<SettrGettr>)new AllMethods().logInMethod();
        pd.cancel();
        return lst;
    }

    @Override
    protected void onPostExecute(ArrayList<SettrGettr> result) 
    {
        ArrayList<SettrGettr> l=result;
        try {
            if(l.size()>0)
            {
            Intent i=new Intent(LogIn.this,Home.class);
            Bundle b=new Bundle();
            b.putSerializable("shahid",l);
            //i.putExtras(b);
            i.putExtras(b);
            startActivity(i);
            }
            else
            {

            }
        } catch (Exception e) 
        {
        Log.d(TAG, "Errors are ::"+e.getMessage());
        }

    }




}


}

    //Recieving Activity:
        public class Home extends Activity implements Serializable
    {

    ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home);
        lv=(ListView)findViewById(R.id.home_lv);

        ArrayList<SettrGettr> gtList=(ArrayList<SettrGettr>)getIntent().getSerializableExtra("shahid"); 
        //(ArrayList<SettrGettr>)getIntent().getSerializableExtra("shahid");

        ArrayAdapter<SettrGettr> adp=new ArrayAdapter<SettrGettr>(Home.this,android.R.layout.simple_list_item_1,gtList);
        lv.setAdapter(adp);


    }


}
//setterGettr:

public class SettrGettr {
    int ID;
    String Name = "";
    String FName = "";
    String Class = "";
    String UserName = "";
    String Password = "";
    String DOB = "";
    String MobileNo = "";
    String Relation = "";
    ArrayList<SettrGettr> msttrList;

    public ArrayList<SettrGettr> getMsttrList() {
        return msttrList;
    }

    public void setMsttrList(ArrayList<SettrGettr> msttrList) {
        this.msttrList = msttrList;
    }

    public int getID() {
        return ID;
    }

    public void setID(int iD) {
        ID = iD;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getFName() {
        return FName;
    }

    public void setFName(String fName) {
        FName = fName;
    }

    public String getCurrentClass() {
        return Class;
    }

    public void setClass(String class1) {
        Class = class1;
    }

    public String getUserName() {
        return UserName;
    }

    public void setUserName(String userName) {
        UserName = userName;
    }

    public String getPassword() {
        return Password;
    }

    public void setPassword(String password) {
        Password = password;
    }

    public String getDOB() {
        return DOB;
    }

    public void setDOB(String dOB) {
        DOB = dOB;
    }

    public String getMobileNo() {
        return MobileNo;
    }

    public void setMobileNo(String mobileNo) {
        MobileNo = mobileNo;
    }

    public String getRelation() {
        return Relation;
    }

    public void setRelation(String relation) {
        Relation = relation;
    }

    @Override
    public String toString() {

        return "\nRegistration No\t: " + getID() + "\n\nName\t\t\t\t\t\t\t: " + getName() + "\n\nFather Name\t\t\t: " + getFName() + "\n\nClass\t\t\t\t\t\t\t: "
                + getCurrentClass() + "\n\nCity\t\t\t\t\t\t\t\t: Islamabad" + "\n\nAdress\t\t\t\t\t\t: Islamabad";

    }

}
Était-ce utile?

La solution

Do one thing and than try

public class Home extends Activity implements Serializable

remove implements Serializable from above line

And add

public class SettrGettr implements Serializable{
int ID;
String Name = "";
String FName = "";
String Class = "";
String UserName = "";
String Password = "";
String DOB = "";
String MobileNo = "";
String Relation = "";
ArrayList<SettrGettr> msttrList;

public ArrayList<SettrGettr> getMsttrList() {
    return msttrList;
}

public void setMsttrList(ArrayList<SettrGettr> msttrList) {
    this.msttrList = msttrList;
}

public int getID() {
    return ID;
}

public void setID(int iD) {
    ID = iD;
}

public String getName() {
    return Name;
}

public void setName(String name) {
    Name = name;
}

public String getFName() {
    return FName;
}

public void setFName(String fName) {
    FName = fName;
}

public String getCurrentClass() {
    return Class;
}

public void setClass(String class1) {
    Class = class1;
}

public String getUserName() {
    return UserName;
}

public void setUserName(String userName) {
    UserName = userName;
}

public String getPassword() {
    return Password;
}

public void setPassword(String password) {
    Password = password;
}

public String getDOB() {
    return DOB;
}

public void setDOB(String dOB) {
    DOB = dOB;
}

public String getMobileNo() {
    return MobileNo;
}

public void setMobileNo(String mobileNo) {
    MobileNo = mobileNo;
}

public String getRelation() {
    return Relation;
}

public void setRelation(String relation) {
    Relation = relation;
}

@Override
public String toString() {

    return "\nRegistration No\t: " + getID() + "\n\nName\t\t\t\t\t\t\t: " + getName() + "\n\nFather Name\t\t\t: " + getFName() + "\n\nClass\t\t\t\t\t\t\t: "
            + getCurrentClass() + "\n\nCity\t\t\t\t\t\t\t\t: Islamabad" + "\n\nAdress\t\t\t\t\t\t: Islamabad";

}

}

Explanation:

When you are passing something serializable through bundle The value that you are passing it must Implements Serializable interface.

But you ware implementing Serializable interface from where you passing the value.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top