2017-07-06 7 views
0

ich die folgenden Codes verwenden Aktivität mit Bündel Extras Daten zu beginnen, und ich kann die Daten gespeichert in Intent Extras siehe:Bundle verliert seine Werte zwischen Aktivitäten

public static Intent newIntent(Context packageContext, AccountItem account, TransactionItem transaction) { 
    Bundle args = new Bundle(); 
    args.putParcelable("arg_key_account", account); 
    args.putParcelable("arg_key_transaction", transaction); 
    args.putInt("test_key", 18); 

    Intent intent = new Intent(packageContext, TransactionConnectActivity.class); 
    intent.putExtra("arg_key", args); 
    intent.putExtra("test_key", 21); 
    return intent; 
} 

enter image description here

Allerdings, wenn ich versuchen Bündel Extras Daten aus Absicht zu bekommen, hat das Bündel keine Daten:

protected void onCreate(@Nullable Bundle savedInstanceState) { 
    ... 
    Intent intent = getIntent(); 
    if (intent != null) { 
     int test = intent.getIntExtra("test_key", -1); 
     Bundle args = intent.getExtras().getBundle("arg_key"); 
    } 
    ... 
} 

enter image description here

Das benutzerdefinierte Objekt hat implementiert Parcelable, und alle Mitglieder wurden in Parzelle geschrieben. und ich habe diese Fragen und Antworten gelesen, kann aber immer noch nicht herausfinden, wo ich falsch liege?

+0

Zu unvorsichtig, verwende ich 'writeValue', um ein String-Element zu paketieren, das' writeString' verwenden muss. – li2

+0

Bitte beantworten Sie Ihre eigene Frage und akzeptieren Sie diese Antwort. Dadurch wird die Frage aus der Liste der unbeantworteten Fragen entfernt. Oder lösche einfach die Frage, wenn sie keinen Wert hat. Vielen Dank. –

Antwort

1

Um sicherzustellen, dass Parcelable Arbeiten muss die richtige Methode, um writeToParcel und createFromParcel verwenden, sonst können Android nicht Abrufen von Daten korrekt, welche verursachen createFromParcel gibt ein Null-Objekt zurück t.

Für dieses Problem hier verwende ich writeValue, um ein String-Mitglied zu paketieren, das writeString verwenden muss.

Verwandte Themen