2012-07-25 101 views
0

我想做一个安全应用程序,要求用户输入密码,如果它是错误的密码对话框(在Theme.Dialog中使用一个活动)将重新启动,但问题活动未启动。对于后退按钮,如果我再按两次,它将直接关闭对话框。startActivity(意图)似乎是越野车

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); 
    } 


} 

回答

1

该问题与后退按钮:

覆盖的方法 'onBackPressed()' 的活性。见the docs

@Override 
public void onBackPressed() 
{ 
    Intent indent = new Intent(this, MyActivityToStart.class); 
    startActivity(intent); 
} 

不要调用'super.onBackPressed()',因为这会关闭活动。

+0

修复了后面的问题!但不是其他人tho :( – dythe 2012-07-25 16:48:28

0

时使用此意图

Intent Act2Intent = new Intent(PresentActivity.this, PasswordDialog.class);    
startActivity(Act2Intent); 
+0

问题是目前的意图也是PasswordDialog.class – dythe 2012-07-25 16:37:32

+0

你可以发布这个类的完整代码 – 2012-07-25 16:39:28

+0

PasswordDialog是目前的类...我已经说过即时开始这个活动作为一个主题。对话框显示为对话窗口,而我想要用户输入密码,如果它不正确,那么它会重新启动此意图 – dythe 2012-07-25 16:48:09

0

找到了解决这个问题我不得不调用finish(); before startActivity()

+0

如果这回答这个问题,然后在这里添加复选标记。 – RaphMclee 2012-07-26 06:07:07

+0

直到明天才能接受我自己的问题。 – dythe 2012-07-26 06:11:52