LoginActivity中85行数组越界,提示很明确:总长度才1,却取到index107-08 10:30:19.604: E/AndroidRuntime(567): java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
07-08 10:30:19.604: E/AndroidRuntime(567): at com.amaker.wlo.LoginActivity.saveUserMsg(LoginActivity.java:85)
07-08 10:30:19.604: E/AndroidRuntime(567): at com.amaker.wlo.LoginActivity.saveUserMsg(LoginActivity.java:85)
解决方案 »
- 用android sdk4.0 开发的软件可以在2.3的系统上运行吗?
- listview scrollbar 滚动条 样式问题
- mapbar Unable to instantiate activity ComponentInfo
- android的操作系统能不能设置用户权限?
- 将android apk文件装入手机提示解析包时出问题
- 求高手解决:如何静默更新自己的APK,而不要弹出提示
- 分享在广州干android的工资
- 新手想搞一个安卓APP(图书馆借书系统),请问需要哪些技术?
- 关于安卓编程的程序设计
- 新建android项目时,出错了,求解
- andorid怎么实现一个效果
- 如何用Service检测正在运行的程序
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import com.amaker.util.HttpUtil;public class LoginActivity extends Activity {
// 声明登录、取消按钮
private Button cancelBtn,loginBtn;
// 声明用户名、密码输入框
private EditText userEditText,pwdEditText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置标题
setTitle("掌中宝无线订餐系统-用户登录");
// 设置当前Activity界面布局
setContentView(R.layout.login_system);
// 通过findViewById方法实例化组件
cancelBtn = (Button)findViewById(R.id.cancelButton);
// 通过findViewById方法实例化组件
loginBtn = (Button)findViewById(R.id.loginButton);
// 通过findViewById方法实例化组件
userEditText = (EditText)findViewById(R.id.userEditText);
// 通过findViewById方法实例化组件
pwdEditText = (EditText)findViewById(R.id.pwdEditText);
cancelBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
finish();
}
});
loginBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(validate()){
if(login()){
Intent intent = new Intent(LoginActivity.this,MainMenuActivity.class);
startActivity(intent);
}else{
showDialog("用户名称或者密码错误,请重新输入!");
}
}
}
});
}
// 登录方法
private boolean login(){
// 获得用户名称
String username = userEditText.getText().toString();
// 获得密码
String pwd = pwdEditText.getText().toString();
// 获得登录结果
String result=query(username,pwd);
if(result!=null&&result.equals("0")){
return false;
}else{
saveUserMsg(result);
return true;
}
}
// 将用户信息保存到配置文件
private void saveUserMsg(String msg){
// 用户编号
String id = "";
// 用户名称
String name = "";
// 获得信息数组
String[] msgs = msg.split(";");
int idx = msgs[0].indexOf("=");
id = msgs[0].substring(idx+1);
idx = msgs[1].indexOf("=");
name = msgs[1].substring(idx+1);
// 共享信息
SharedPreferences pre = getSharedPreferences("user_msg", MODE_WORLD_WRITEABLE);
SharedPreferences.Editor editor = pre.edit();
editor.putString("id", id);
editor.putString("name", name);
editor.commit();
}
// 验证方法
private boolean validate(){
String username = userEditText.getText().toString();
if(username.equals("")){
showDialog("用户名称是必填项!");
return false;
}
String pwd = pwdEditText.getText().toString();
if(pwd.equals("")){
showDialog("用户密码是必填项!");
return false;
}
return true;
}
private void showDialog(String msg){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(msg)
.setCancelable(false)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
AlertDialog alert = builder.create();
alert.show();
}
// 根据用户名称密码查询
private String query(String account,String password){
// 查询参数
String queryString = "account="+account+"&password="+password;
// url
String url = HttpUtil.BASE_URL+"servlet/LoginServlet?"+queryString;
// 查询返回结果
return HttpUtil.queryStringForPost(url);
}
}
程序源代码,求大神帮忙,书上抄的,但是运行总是出现上面的报错
// 根据用户名称密码查询
private String query(String account,String password){
// 查询参数
String queryString = "account="+account+"&password="+password;
// url
String url = HttpUtil.BASE_URL+"servlet/LoginServlet?"+queryString;
// 查询返回结果
return HttpUtil.queryStringForPost(url);
}这一段,你的程序中有LoginServlet这个Servlet么?如果没有,肯定不行啊,如果有的话,看看返回的String有没有这个分号 ; 因为这里拆分的时候就用分号的// 获得信息数组
String[] msgs = msg.split(";");
id "网络异常!" (id=830026090968)
idx -1
msgs String[1] (id=830026091240)
name "" (id=830012502784)
count 0
hashCode 0
offset 0
value (id=830012502816)
msg "网络异常!" (id=830026090968)
count 5
hashCode 1027227840
offset 0
value (id=830026091000)
以下是我的mySql数据库链接,是不是填错了呢,本机运行安卓链接mySql数据库地址有什么格式没,谢谢大家啦
public static final String BASE_URL="http://192.168.1.104:8080/mysql/";
private void saveUserMsg(String msg){ 把这个msg打印下,不就明了了么
07-11 13:01:25.616: E/AndroidRuntime(581): java.lang.NullPointerException
07-11 13:01:25.616: E/AndroidRuntime(581): at com.amaker.wlo.LoginActivity.login(LoginActivity.java:67)
07-11 13:01:25.616: E/AndroidRuntime(581): at com.amaker.wlo.LoginActivity.access$1(LoginActivity.java:60)
07-11 13:01:25.616: E/AndroidRuntime(581): at com.amaker.wlo.LoginActivity$2.onClick(LoginActivity.java:49)
07-11 13:01:25.616: E/AndroidRuntime(581): at android.view.View.performClick(View.java:3480)
07-11 13:01:25.616: E/AndroidRuntime(581): at android.view.View$PerformClick.run(View.java:13983)
07-11 13:01:25.616: E/AndroidRuntime(581): at android.os.Handler.handleCallback(Handler.java:605)
07-11 13:01:25.616: E/AndroidRuntime(581): at android.os.Handler.dispatchMessage(Handler.java:92)
07-11 13:01:25.616: E/AndroidRuntime(581): at android.os.Looper.loop(Looper.java:137)
07-11 13:01:25.616: E/AndroidRuntime(581): at android.app.ActivityThread.main(ActivityThread.java:4340)
07-11 13:01:25.616: E/AndroidRuntime(581): at java.lang.reflect.Method.invokeNative(Native Method)
07-11 13:01:25.616: E/AndroidRuntime(581): at java.lang.reflect.Method.invoke(Method.java:511)
07-11 13:01:25.616: E/AndroidRuntime(581): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-11 13:01:25.616: E/AndroidRuntime(581): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-11 13:01:25.616: E/AndroidRuntime(581): at dalvik.system.NativeStart.main(Native Method)
还是有问题啊
String pwd = pwdEditText.getText().toString();改成:
String username = null;
String pwd = null;
if(userEditText!=null && userEditText.getText()!=null)
{
username = userEditText.getText().toString();
}
if(pwdEditText!=null && pwdEditText.getText()!=null)
{
pwd = pwdEditText.getText().toString();
}