0

我正在做一些 android 编码,完全是新手,我想知道我是否做得对。基本上我的主要活动有两个编辑文本,您可以在其中输入用户名和密码。(我将用户名和密码存储在文本文件中,这是用于学校/学习的,我知道这不是存储它们的方式)

在我的 java 代码中,我使用 onClick() 检查密码和用户名是否在文本文件中。如果不是,我想显示一个警告对话框,提示用户名/密码不正确,再试一次。我只是对我应该如何使用 bundle savedInstanceState 感到有点困惑。让我先给你看一下 java 代码。

public class MainActivity extends Activity {
private Triage triage = new Triage();
File passwdFile = new File (this.getApplicationContext().getFilesDir(), "passwords.txt");
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button = (Button) findViewById(R.id.button1);
}
public void onClick(View view){
    if (checkUsername(this.triage, view)){
        startActivity(new Intent(MainActivity.this, MainActivity2.class));
    }
    else{
        onCreateDialog(savedInstanceState).show();
       }
}

public boolean checkUsername(Triage t, View v){
    EditText username = (EditText) v.findViewById(R.id.usernameText);
    EditText passwordEntered = (EditText) v.findViewById(R.id.editText2);
    HashMap<String, Nurse> nurseMap = (HashMap<String, Nurse>)triage.getNurseMap();
    if ((nurseMap.containsKey(username)) && nurseMap.get(username).getPassword().equals(passwordEntered)){
            return true;
    }
    else {
        return false;
    }
}

public Dialog onCreateDialog(Bundle savedInstanceState){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener(){
        public void onClick(DialogInterface dialog, int id){
            dialog.dismiss();}
            });
    builder.setMessage("Try Again")
    .setTitle("Wrong username/password");
    AlertDialog dialog = builder.create();
    return dialog;
    }
}

我想我调用 onCreateDialog(savedInstanceState).show() 错误,所以我问我如何将 savedInstanceState 作为参数传递?它是否正确?我知道使用了savedInstanceState,因此您可以在屏幕更改时重新创建您的活动,并且我假设警报对话框是此功能的扩展?

4

2 回答 2

1

onCreateDialog随着片段的引入,该活动已被弃用。如果我是你,我只会使用AlertDialog.Builder内联,因为这只是为了上课。

但是,如果您认真使用onCreateDialog,则不应直接调用它。您应该调用活动的showDialog(id)方法并传递一个 id。系统将调用onCreateDialog(long id)并传递 id。系统将显示您为您返回的对话框。确保匹配 showDialog 和 onCreateDialog 以便它们都只有 id 或都具有 id 和 bundle。

如果你想使用片段。您需要继承DialogFragment并覆盖该onCreateDialog方法并执行与活动相同的操作onCreateDialog(创建并返回一个对话框)。在您的活动中,您创建片段的新实例并show(getFragmentManager(), "my-tag")从该实例调用。

于 2013-11-06T02:57:06.647 回答
0

对话生成器的非常基本的用法是

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Hello...")
        .setPositiveButton("OK", dialogClickListener)
        .setNegativeButton("Cancle", dialogClickListener).show();

DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener()
    {
        public void onClick(DialogInterface dialog, int which)
        {
            switch (which)
            {
                case DialogInterface.BUTTON_POSITIVE:
                    // Yes button clicked
                    break;
                case DialogInterface.BUTTON_NEGATIVE:
                    // No button clicked
                    break;
            }
        }
    };

你应该在这里阅读更多关于它的信息

于 2013-11-06T06:42:05.743 回答