Я отказался от попыток отслеживать несколько пар имя / значение. Вы можете создать неизменный класс (или использовать Parcels) как:
public final class PasswordState implements Serializable {
private static final long serialVersionUID = 1L;
public static final int MIN_PASSWORD_LENGTH= 8;
public final int lengthKey; // in bytes
public final long timeExpire; // in milliseconds as a Calendar object
public final boolean isValidKey;
public final int timeoutType;
public final String password;
public final boolean isHashPassword;
public PasswordState(int lengthKey,
long timeExpire,
boolean isValidKey,
int timeoutType,
String password,
boolean isHashPassword){
this.lengthKey= lengthKey;
this.timeExpire= timeExpire;
this.isValidKey= isValidKey;
this.timeoutType= timeoutType;
this.password= password;
this.isHashPassword= isHashPassword;
}
Затем передайте это в намерение ребенку:
private void launchManagePassword() {
Intent i= new Intent(this, ManagePassword.class); // no param constructor
PasswordState outState= new PasswordState(lengthKey,timeExpire,isValidKey,timeoutType,"",model.getIsHashPassword());
Bundle b= new Bundle();
b.putSerializable("jalcomputing.confusetext.PasswordState", outState);
i.putExtras(b);
startActivityForResult(i,REQUEST_MANAGE_PASSWORD); // used for callback
}
Наконец, получите объект с состоянием в дочернем действии:
try {
inPWState= (PasswordState) getIntent().getSerializableExtra("jalcomputing.confusetext.PasswordState");
lengthKey= inPWState.lengthKey;
timeoutType= inPWState.timeoutType;
isValidKey= inPWState.isValidKey;
timeExpire= inPWState.timeExpire;
isHashPassword= inPWState.isHashPassword;
// password= inPWState.password; // not required
} catch(Exception e){
lengthKey= PasswordState.MIN_PASSWORD_LENGTH;
timeoutType= TIMEOUT_NEVER;
isValidKey= true;
timeExpire= LONG_YEAR_MILLIS;
isHashPassword= false;
}
JAL