1

私はこれが何度も尋ねられたことを知っていますが、答えは決して当てはまらないようです.

アクティビティ 1:

public void buttonPress(View view){
    Intent i = new Intent(this,ProfilePage.class);  
    i.putExtra("USER_DETAILS", UD);
    startActivity(i);
}

アクティビティ 2:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_profile_page);
    try{
        UserDetails UD = (UserDetails)this.getIntent().getExtras().getParcelable("USER_DETAILS");
        ((TextView)findViewById(R.id.First)).setText(UD.getFirst_name());
        ((TextView)findViewById(R.id.Last)).setText(UD.getLast_name());
    }catch (Exception e) {
        Log.e("GETTING EXTRAS", e.toString());
    }
}

「UD」は別の場所で正しく返してもらっているので、パーセル可能です。this.getIntent().getExtras().getParcelable("USER_DETAILS") は単に null を返します。この問題に引き続き遭遇します。どうすれば修正できますか、それとも何が得られないのでしょうか?

4

5 に答える 5

1

試す

UserDetails UD = (UserDetails) getIntent().getParcelableExtra("USER_DETAILS");
于 2013-05-10T03:29:40.050 に答える
0

UserDetails に Serializable を実装させることで、次のようなことができます。

Intent i = new Intent(this,ProfilePage.class);  
i.putExtra("USER_DETAILS", UD);

次に、次のようにオブジェクトを取得します。

UserDetails UD = (UserDetails)this.getIntent().getSerializableExtra("USER_DETAILS");

編集: パフォーマンスの問題では、Serializable は Parcelable よりも遅いです。これを確認してください。とにかく、私はあなたの問題の回避策としてこれを投稿しました。

于 2013-05-10T03:26:51.637 に答える