Java 使用onPostExecute推送MySQL数据时出错
我是编程新手。我正在做一个登录系统,但当我登录时,我得到了那个错误。我不知道怎么解决它。我还有一个问题:使用聊天和好友(添加、删除)系统创建登录系统是否太难 因为我想这样做,但我一周前才开始编程,我能这样做吗Java 使用onPostExecute推送MySQL数据时出错,java,android,Java,Android,我是编程新手。我正在做一个登录系统,但当我登录时,我得到了那个错误。我不知道怎么解决它。我还有一个问题:使用聊天和好友(添加、删除)系统创建登录系统是否太难 因为我想这样做,但我一周前才开始编程,我能这样做吗 FATAL EXCEPTION: main Process: complete.lyne.myapplication, PID: 18933 java.lang.ArrayIndexOutOfBoundsException: length=2; index=2 at complete.ly
FATAL EXCEPTION: main
Process: complete.lyne.myapplication, PID: 18933
java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
at complete.lyne.myapplication.Login$SolicitaDados.onPostExecute(Login.java:110)
at complete.lyne.myapplication.Login$SolicitaDados.onPostExecute(Login.java:91)
at android.os.AsyncTask.finish(AsyncTask.java:660)
at android.os.AsyncTask.-wrap1(AsyncTask.java)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:677)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
这是我的密码:
package complete.lyne.myapplication;
import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.IOException;
// import br.com.simplepass.loading_button_lib.customViews.CircularProgressButton;
public class Login extends AppCompatActivity {
EditText loginEmail, loginSenha;
Button btLogar;
TextView refCadastrar;
String url = "";
String parametro = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
loginEmail = (EditText)findViewById(R.id.loginEmail);
loginSenha = (EditText)findViewById(R.id.loginSenha);
btLogar = (Button)findViewById(R.id.btLogar);
refCadastrar = (TextView)findViewById(R.id.refCadastrar);
refCadastrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent abreCadastro = new Intent(Login.this, Cadastro.class);
startActivity(abreCadastro);
}
});
btLogar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ConnectivityManager connectivityManager = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
String email = loginEmail.getText().toString();
String senha = loginSenha.getText().toString();
if(email.isEmpty() && senha.matches(".*[a-z].*")) {
loginEmail.setError("Insira seu endereço de Email.");
} else if (email.matches(".*[a-z].*") && senha.isEmpty()) {
loginSenha.setError("Insira sua Senha.");
} else if (email.isEmpty() && senha.isEmpty()) {
Toast.makeText(getApplicationContext(), "Nenhum campo pode ficar vazio.", Toast.LENGTH_LONG).show();
} else {
// Casa
url = "http://192.168.1.100/lyne/logar.php";
// Badran
// url = "http://172.16.2.15/lyne/logar.php";
parametro = "email=" + email + "&senha=" + senha;
new SolicitaDados().execute(url);
}
}
else {
Toast.makeText(getApplicationContext(), "Nenhuma conexão com a Internet foi encontrada.", Toast.LENGTH_LONG).show();
}
}
});
}
private class SolicitaDados extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
return Conexao.postDados(urls[0], parametro);
}
@Override
protected void onPostExecute(String resultado) {
if(resultado != null) {
if (resultado.contains("login_ok")) {
String[] dados = resultado.split(",");
Intent abreHome = new Intent(Login.this, Home.class);
abreHome.putExtra("idusu", dados[1]);
abreHome.putExtra("nomeusu", dados[2]);
startActivity(abreHome);
} else {
Toast.makeText(getApplicationContext(), "Usuário ou senha incorretos.", Toast.LENGTH_LONG).show();
}
}
}
}
@Override
protected void onPause() {
super.onPause();
finish();
}
}
package complete.lyne.myapplication;
导入android.content.Context;
导入android.content.Intent;
导入android.graphics.BitmapFactory;
导入android.graphics.Color;
导入android.net.ConnectivityManager;
导入android.net.NetworkInfo;
导入android.os.AsyncTask;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.io.IOException;
//导入br.com.simplepass.loading_button_lib.customViews.CircularProgressButton;
公共类登录扩展了AppCompatActivity{
EditText loginEmail,loginSenha;
按钮btLogar;
TextView参考地籍;
字符串url=“”;
字符串parametro=“”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
loginEmail=(EditText)findViewById(R.id.loginEmail);
loginSenha=(EditText)findViewById(R.id.loginSenha);
btLogar=(按钮)findViewById(R.id.btLogar);
refcadastar=(TextView)findViewById(R.id.refcadastar);
refcadastar.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent abreCadastro=新Intent(Login.this,Cadastro.class);
星触觉(abreCadastro);
}
});
btLogar.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
ConnectivityManager ConnectivityManager=(ConnectivityManager)
getSystemService(Context.CONNECTIVITY\u服务);
NetworkInfo NetworkInfo=connectivityManager.getActiveNetworkInfo();
if(networkInfo!=null&&networkInfo.isConnected()){
字符串email=loginEmail.getText().toString();
字符串senha=loginSenha.getText().toString();
if(email.isEmpty()&&senha.matches(“.[a-z].])){
loginEmail.setError(“Insira seu endereço de Email.”);
}else if(email.matches(“%a-z]”)和&senha.isEmpty(){
loginSenha.setError(“Insira sua Senha”);
}else if(email.isEmpty()&&senha.isEmpty()){
Toast.makeText(getApplicationContext(),“Nenhum campo pode ficar vazio.”,Toast.LENGTH_LONG.show();
}否则{
//卡萨
url=”http://192.168.1.100/lyne/logar.php";
//巴德兰
//url=”http://172.16.2.15/lyne/logar.php";
parametro=“email=“+email+”&senha=“+senha;
新建requestadados().execute(url);
}
}
否则{
Toast.makeText(getApplicationContext(),“Nenhuma conexão com a Internet foi encontrada.”,Toast.LENGTH_LONG.show();
}
}
});
}
私有类requestadados扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…URL){
返回Conexao.postDados(URL[0],parametro);
}
@凌驾
受保护的void onPostExecute(字符串resultado){
if(resultado!=null){
if(resultado.contains(“login_ok”)){
字符串[]dados=resultado.split(“,”);
Intent abreHome=newintent(Login.this,Home.class);
abreHome.putExtra(“idusu”,护墙板[1]);
abreHome.putExtra(“nomeusu”,护墙板[2]);
星触觉(abreHome);
}否则{
Toast.makeText(getApplicationContext(),“Usuário ou senha incorrectoros.”,Toast.LENGTH_LONG.show();
}
}
}
}
@凌驾
受保护的void onPause(){
super.onPause();
完成();
}
}
您正在拆分字符串:
String[] dados = resultado.split(",");
假设至少有三件:
abreHome.putExtra("idusu", dados[1]);
abreHome.putExtra("nomeusu", dados[2]);
但看起来情况并非如此。检查
护墙板的长度,然后再从中访问元素。正在拆分字符串:
String[] dados = resultado.split(",");
假设至少有三件:
abreHome.putExtra("idusu", dados[1]);
abreHome.putExtra("nomeusu", dados[2]);
但看起来情况并非如此。检查护墙板的长度,然后再从中访问元素。您要求的是数组中不存在的索引
看起来你在寻找两个物体,而不是三个,但你找错了地方
您应该编辑代码,使其如下所示:
abreHome.putExtra("idusu", dados[0]);
abreHome.putExtra("nomeusu", dados[1]);
您请求的索引在数组中不存在
看起来你在寻找两个物体,而不是三个,但你找错了地方
您应该编辑代码,使其如下所示:
abreHome.putExtra("idusu", dados[0]);
abreHome.putExtra("nomeusu", dados[1]);
我相信他试图从1开始,而不是从0开始。我相信他试图从1开始,而不是从0开始,index.thx,修复了那个错误,但现在我在这行上得到了一个新错误uNome=getIntent().getExtras().getString(“nomeusu”);textViewN.setText(uNome);你知道为什么吗?thx,修复了那个错误,但是现在我在这行上得到了一个新错误uNome=getIntent().getExtras().getString(“nomeusu”);textViewN.setText(uNome);你知道为什么吗?