我正在做一些Android编码,总是新手,我想知道我是否做得对。 基本上我的mainactivity有两个edittext,你可以输入用户名和密码。 (我将用户名和密码存储在文本文件中,这是用于学校/学习我知道它不是存储它们的方式)
在我的jave代码中,我检查密码和用户名是否在带有onClick()的文本文件中。如果不是我想显示一个警告对话框,说明用户名/密码不正确再试一次。 我只是对我应该如何使用bundle savedInstanceState这一点感到困惑。让我先看看jave代码。
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,因此您可以在屏幕更改时重新创建活动,并假设警报对话框是此扩展名吗?
答案 0 :(得分:1)
随着片段的引入,活动的onCreateDialog
已被弃用。如果我是你,我会使用AlertDialog.Builder
内联,因为这只是为了上课。
如果您认真使用onCreateDialog
,则不应直接调用它。您应该调用活动的showDialog(id)
方法并传递ID。系统将调用onCreateDialog(long id)
并传递ID。系统将显示您为您返回的对话框。确保你匹配showDialog和onCreateDialog,这样他们要么只有id,要么两者都有id&amp;束。
如果你想使用片段。您需要子类DialogFragment
并覆盖onCreateDialog
方法并执行与活动onCreateDialog
相同的操作(创建并返回一个Dialog)。在您的活动中,您可以创建片段的新实例并从实例中调用show(getFragmentManager(), "my-tag")
。
答案 1 :(得分: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;
}
}
};
您应该阅读更多相关信息here