我有一个活动的小问题。
有 3 个活动:
用于登录的 MainActivity,
DataActivity 是一个带有 3 个选项卡的活动,
ParameterActivity 是一个更改设置的活动。
这些是解决问题的步骤:
- 应用程序启动并加载 MainActivity
- 用户按下登录按钮并加载 DataActivity
- 用户按下设备(平板电脑)上的“返回”按钮并加载 ParameterActivity。-> 但 ParameterActivity 未正确加载。仅显示,不执行 OnCreate 中的步骤。
为什么是第 3 步?
在我的代码中,只有一种可能加载活动(MainActivity 中有一个“参数”按钮,在 OnCreate 中添加了 setOnClickListener)。
在后台(在 MainActivity 中启动)有一个线程检查与服务器的数据连接。
这是登录按钮的代码。
应用程序是在模拟模式还是正常模式下运行都没有关系。另一个代码用于检查正确的引脚(格式和值)。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
});
在第二个活动中,onBack 未被覆盖。