Startactivity (intenzione) sembra essere buggy
-
11-12-2019 - |
Domanda
Sto cercando di eseguire un'app di sicurezza che richiede agli utenti di inserire una password se non è errata la finestra di dialogo Password (usando un'attività in un tema.Dialog) rilanciarà di nuovo, ma il problema è l'attività non inizia.Per il pulsante Indietro se premi indietro due volte, licenzierà direttamente la finestra di dialogo.
package nyp.android.project;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningTaskInfo;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class PasswordDialog extends Activity {
private static final String TAG = "Logging Activity";
private static boolean isMyServiceRunning;
//Context context;
Button login;
EditText inputPassword;
String password;
protected void onCreate(Bundle savedInstanceState)
{
//this.context = context;
super.onCreate(savedInstanceState);
setContentView (R.layout.password_dialog);
final SharedPreferences passwdfile = getSharedPreferences(
PhoneFinder.PASSWORD_PREF_KEY, 0);
final String correctSHA1 = passwdfile.getString(PhoneFinder.PASSWORD_PREF_KEY, null);
login = (Button) findViewById(R.id.btnLogin);
inputPassword = (EditText) findViewById(R.id.loginPassword);
login.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
password = inputPassword.getText().toString();
final String SHA1hash = PhoneFinder.getSHA1(password);
if (correctSHA1.equals(SHA1hash)) {
Toast.makeText(PasswordDialog.this, "Correct", Toast.LENGTH_LONG).show();
finish();
stopService(new Intent(getBaseContext(), MyService.class));
Log.v(TAG, "SHA1 Hash:" + SHA1hash);
Log.v(TAG, "Correct SHA1:" + correctSHA1);
}
else {
Toast.makeText(PasswordDialog.this, "Wrong", Toast.LENGTH_LONG).show();
Intent Act2Intent = new Intent(getBaseContext(), PasswordDialog.class);
startActivity(Act2Intent);
finish();
Log.v(TAG, "SHA1 Hash:" + SHA1hash);
Log.v(TAG, "Correct SHA1:" + correctSHA1);
}
}
});
}
@Override
public void onBackPressed()
{
Intent indent = new Intent(this, PasswordDialog.class);
startActivity(indent);
}
}
. Soluzione
Per il problema con il pulsante Indietro:
Sostituisci il metodo 'onDocpress ()' dell'attività.Vedi I Documenti .
@Override
public void onBackPressed()
{
Intent indent = new Intent(this, MyActivityToStart.class);
startActivity(intent);
}
.
Non chiamare il "Super.OnBackpressed ()" in quanto ciò chiudesse l'attività.
Altri suggerimenti
Usa questo per intenti
Intent Act2Intent = new Intent(PresentActivity.this, PasswordDialog.class);
startActivity(Act2Intent);
. ha trovato la soluzione al problema che ho dovuto chiamare finitura ();prima dell'astactivity ()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow