アクティビティに小さな問題があります。
ログイン用の
MainActivity、3 つのタブを持つ DataActivity、設定を変更するための ParameterActivity の 3 つのアクティビティが
あります。
問題の手順は次のとおりです。
- アプリが開始され、MainActivity が読み込まれます
- ユーザーがログイン ボタンを押すと、DataActivity が読み込まれます
- ユーザーがデバイス (タブレット) の [戻る] ボタンを押すと、ParameterActivity が読み込まれます。-> しかし、ParameterActivity が正しく読み込まれていません。表示されるだけで、OnCreate の手順は実行されません。
なぜステップ3?
私のコードでは、アクティビティが読み込まれる可能性は 1 つしかありません (OnCreate の setOnClickListener で追加された MainActivity に「パラメータ」ボタンがあります)。
バックグラウンド (MainActivity で開始) には、サーバーへのデータ接続をチェックするスレッドがあります。
ログインボタンのコードです。
アプリがシミュレーションまたは通常モードで実行されているかどうかは問題ではありません。もう 1 つのコードは、正しいピン (形式と値) をチェックするためのものです。PasswordTimeOut()、WrongPasswordMessage()、PasswordFalschesFormat() は、メッセージを表示する関数です。
bLogin.setOnClickListener(new View.OnClickListener() {
//On Click Methode
@Override
public void onClick(View v) {
// Checkbox fürs Passwort gesetz
if (chkPW.isChecked()) {
ZGlobals.setting.setPin(txtPin.getText().toString());
}
else { // sonst Pin zurücksetzen
ZGlobals.setting.setPin("");
}
SaveSettings();
// Wenn Simulationsmodus, dann direkt Hauptmaske, wenn PIN 1234 richtig
if (ZGlobals.setting.getSimulation()) {
if (txtPin.getText().toString().length() == 4 && isNumeric(txtPin.getText().toString())){
if (Integer.parseInt(txtPin.getText().toString()) == 1234) {
bLayoutThread = false;
Intent i = new Intent(getApplicationContext(), HomescreenActivity.class);
startActivity(i);
} else {
WrongPasswordMesage();
}
}
else {
PasswordFalschesFormat();
}
} else {
Runnable ReadData = new Runnable() {
@Override
public void run () {
int iCount = 0;
ZGlobals.gui.ResetPasswordMessage();
while (!ZGlobals.gui.GetMessagePasswordReceived()) {
iCount++;
if (iCount == 100) {
break;
}
SystemClock.sleep(20);
}
if (iCount < 100) {
if (ZGlobals.gui.GetMessagePasswordReceived()) {
if (ZGlobals.gui.getMessagePassword().getPasswordCorrect()) {
RightPasswordMessage();
bLayoutThread = false;
Intent i = new Intent(getApplicationContext(), HomescreenActivity.class);
startActivity(i);
}
else {
WrongPasswordMesage();
}
}
} // end if
else {
PasswordTimeOut ();
}
}
};
if (checkPin(txtPin.getText().toString())) {
Thread t = new Thread(ReadData);
t.start();
}
}
} // onClick
});
2 番目のアクティビティでは、onBack はオーバーライドされません。