需求:在先前QQ登陆界面的基础上,增加一个注册Activity以及一个登陆成功界面的Activity,同时增加注册机制和登陆检验机制,使用xml文件来保存用户名和密码,分别联系安卓下的Xml文件序列化及Pull解析xml文件
登陆成功界面:
注册界面:
xml序列化代码:
public static boolean writeToXml(User user, Context context, String filename) {
// 从xml文件读出来userlist
userlist = readFromXml(filename, context);
try {
if (userlist.contains(user)) {
return false;
}
userlist.add(user);
// 1.获得序列化对象
XmlSerializer serializer = Xml.newSerializer();
// 1.获取要存储的文件,这里要写全.xml文件名
File file = new File(context.getFilesDir(), filename);
// 指定序列化对象的输出位置以及编码
serializer.setOutput(new FileOutputStream(file), ENCODING);
//开始写xml文件到本地
serializer.startDocument(ENCODING, true);
serializer.startTag(null, "users");// <users>
for (User u : userlist) {
serializer.startTag(null, "user");// <user>
serializer.startTag(null, "account");
serializer.text(u.getAccount());
serializer.endTag(null, "account");
serializer.startTag(null, "password");
serializer.text(u.getPassword());
serializer.endTag(null, "password");
serializer.endTag(null, "user");// </user>
}
serializer.endTag(null, "users");// </users>
serializer.endDocument();
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
xml文件pull解析代码:
public static ArrayList<User> readFromXml(String filename, Context context) {
try {
userlist = null;
XmlPullParser pullParser = Xml.newPullParser();
InputStream is = new FileInputStream(new File(
context.getFilesDir(), filename));
pullParser.setInput(is, ENCODING);
int eventType = pullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
String tagName = pullParser.getName();
switch (eventType) {
case XmlPullParser.START_TAG:// 节点起始
if (tagName.equals("users")) {
userlist = new ArrayList<>();
} else if (tagName.equals("user")) {
user = new User();
} else if (tagName.equals("account")) {
user.setAccount(pullParser.nextText());
} else if (tagName.equals("password")) {
user.setPassword(pullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if (tagName.equals("user")) {
userlist.add(user);
}
break;
default:
break;
}
// 继续查找下一个节点的类型
eventType = pullParser.next();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return userlist;
}