我是Android编程新手。我想将一个对象从一个intent传递给另一个。我使用Android的Parcelable
,但似乎Parcelable
写不正常。这是我的对象类。
public class User implements Parcelable{
//parameters
private String name;
private String surname;
private String email;
private String number;
private String username;
private String Uid;
//constructors
public User(final FirebaseUser user, final DatabaseReference reference){
Uid = user.getUid();
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
name = dataSnapshot.child("Users").child(Uid).child("Name").getValue(String.class);
surname = dataSnapshot.child("Users").child(Uid).child("Surname").getValue(String.class);
email = dataSnapshot.child("Users").child(Uid).child("Email").getValue(String.class);
number = dataSnapshot.child("Users").child(Uid).child("Number").getValue(String.class);
if ( number == null)
number = "No number";
username = dataSnapshot.child("Users").child(Uid).child("Username").getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public User(Parcel in) {
this.name = in.readString();
this.surname = in.readString();
this.email = in.readString();
this.number = in.readString();
this.username = in.readString();
this.Uid = in.readString();
}
public static final Creator<User> CREATOR = new Creator<User>() {
@Override
public User createFromParcel(Parcel in) {
return new User(in);
}
@Override
public User[] newArray(int size) {
return new User[size];
}
};
public String getEmail() {
return email;
}
public String getUid()
{
return Uid;
}
public String getName(){
return name;
}
public String getSurname(){
return surname;
}
public String getMail(){
return email;
}
public String getNumber(){
return number;
}
public String getUsername()
{
return username;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.name);
dest.writeString(this.surname);
dest.writeString(this.email);
dest.writeString(this.number);
dest.writeString(this.username);
dest.writeString(this.Uid);
}
}
这就是我尝试传递此User对象的方式。
Intent intent = new Intent(getApplicationContext(), mainPage.class);
intent.putExtra("User",mUser);
我是如何得到的:
Intent intent = getIntent();
user = intent.getParcelableExtra("User");
displayName = user.getName();
我在Log的第一个活动中检查了getUsername()
方法是否有效,它运行正常。但是,当我尝试将其发送到其他活动时,getUsername
会返回null
。
答案 0 :(得分:0)
MainActivity:
NOTE: Line generated by the macro variable "TAQ_DS".
152 cq.cqm_2013:
_
22
200
ERROR 22-322: Syntax error, expecting one of the following: a name, ;, (, ',',
ANSIMISS, AS, CROSS, EXCEPT, FULL, GROUP, HAVING, INNER,
INTERSECT, JOIN, LEFT, NATURAL, NOMISS, ORDER, OUTER, RIGHT,
UNION, USING, WHERE.
ERROR 200-322: The symbol is not recognized and will be ignored.
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of
statements.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SQL used (Total process time):
real time 0.02 seconds
cpu time 0.00 seconds
ERROR: File WORK._V_CQM_2013.DATA does not exist.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: SAS set option OBS=0 and will continue to check statements.
This might cause NOTE: No observations in data set.
WARNING: The data set WORK.XTEMP2_OXY may be incomplete. When this step was
stopped there were 0 observations and 8 variables.
NOTE: DATA statement used (Total process time):
real time 0.02 seconds
cpu time 0.00 seconds
UserDetail活动:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
User user = new User();
user.setUid("1");
user.setName("kaushal");
user.setSurname("gosaliya");
user.setEmail("kaushalgosaliya5@gmail.com");
user.setUsername("kaushalgosaliya5");
user.setNumber("8866456322");
startActivity(new Intent(MainActivity.this,UserDetail.class).putExtra("userdetail",user));
}
}