0

パスワード ダイアログ (Theme.Dialog でのアクティビティの使用) が再起動するのに間違っている場合、ユーザーにパスワードの入力を要求するセキュリティ アプリを実行しようとしていますが、問題はアクティビティが開始されないことです。戻るボタンの場合、戻るを2回押すと、ダイアログが直接閉じられます。

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


}
4

3 に答える 3

1

戻るボタンに関する問題の場合:

アクティビティのメソッド「onBackPressed()」をオーバーライドします。ドキュメントを参照してください。

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

アクティビティが閉じてしまうため、「super.onBackPressed()」を呼び出さないでください。

于 2012-07-25T16:27:33.593 に答える
0

私はfinish();を呼び出す必要があった問題の解決策を見つけました。startActivity() の前に

于 2012-07-25T16:53:25.833 に答える
0

これをインテントに使用します

Intent Act2Intent = new Intent(PresentActivity.this, PasswordDialog.class);              
startActivity(Act2Intent);  
于 2012-07-25T16:28:55.590 に答える