Java Android:致命异常:异步任务1

Java Android:致命异常:异步任务1,java,android,apache,android-asynctask,Java,Android,Apache,Android Asynctask,我在运行代码时遇到了一个致命的异常:AsyncTask 1。日志是:告诉我这是由ArrayIndexOutOfBoundsException引起的 这是我的项目代码 物流活动 package com.app.amusa; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.apache.http.NameValuePair; import org.apache.h

我在运行代码时遇到了一个致命的异常:AsyncTask 1。日志是:告诉我这是由ArrayIndexOutOfBoundsException引起的

这是我的项目代码 物流活动

    package com.app.amusa;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONObject;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;

public class loginactivity extends Activity {
    private EditText email, password;
    private SessionManager session;
    private JSONArray jsonArray;
    private JSONObject jsonObject;
    private Streamer Streamer;
    private String output,url,success;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_login);
        session = new SessionManager(getApplicationContext());
        Streamer = new Streamer();
        Toast.makeText(getApplicationContext(),
                "User Login Status: " + session.isLoggedIn(), Toast.LENGTH_LONG)
                .show();
        email = (EditText) findViewById(R.id.etEmail);
        password = (EditText) findViewById(R.id.etPass);
        TextView register = (TextView) findViewById(R.id.txtregister);
        register.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {   
            Intent i = new Intent(getApplicationContext(), Registeractivity.class);
            startActivity(i);
        }
    });
}
public void login(View v) {
    if (email.getText().toString().trim().length() > 0
            && password.getText().toString().trim().length() > 0) 
    {
        new Masuk().execute();
    } 
    else 
    {
        Toast.makeText(getApplicationContext(), "Email and Password is Empty!!", Toast.LENGTH_LONG).show();
    }
}

public void dologin(){
    try {
        List<NameValuePair>nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("aksi", "login"));
        nameValuePairs.add(new BasicNameValuePair("email", email.getText().toString()));
        nameValuePairs.add(new BasicNameValuePair("password", password.getText().toString()));
        jsonArray = Streamer.postData(VariabelGlobal.url+"/user.php", nameValuePairs);
        jsonObject = jsonArray.getJSONObject(0);
        success = jsonObject.getString(success);
        JSONArray hasil = jsonObject.getJSONArray("login");
        if (success.equals("1")) {
            for (int i = 0; i < hasil.length(); i++) {
                JSONObject c = hasil.getJSONObject(i);                  
                String nama = c.getString("nama").trim();
                String email = c.getString("email").trim();
                session.createLoginSession(nama, email);
                Log.e("ok", " ambil data");
            }
        } else {
            Log.e("erro", "Can not get datas");
        }
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
}
    }
private class Masuk extends AsyncTask<Object, Integer, Void> {
    private ProgressDialog dialog;

    @Override
    protected void onPreExecute() {
        dialog = new ProgressDialog(loginactivity.this);
        dialog.setMessage("Is Loging In");
        dialog.setIndeterminate(false);
        dialog.setCanceledOnTouchOutside(false);
        //dialog.setCancelable(false);
        dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        dialog.setProgress(0);
        dialog.show();
    }

    @Override
    protected Void doInBackground(Object... arg0) {
        if(arg0[0].equals("login")){
            output = "login";
            dologin();
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(Integer... progress) {
        dialog.setProgress(progress[0]);
    }

    @Override
    protected void onPostExecute(Void result) {
        try {
            dialog.dismiss();
            if(output.equals("login")){
                Toast.makeText(loginactivity.this, jsonObject.getString("status"), Toast.LENGTH_SHORT).show();
                Intent a = new Intent(loginactivity.this, Dashboard.class);
                startActivity(a);
                finish();
            }
        } catch (Exception e) {
        }

    }

}
} echo json_编码$data

有人请帮帮我。 谢谢

您可以调用new Masuk.execute,无需任何参数。然后尝试在此处检查不存在的第一个参数:

@Override
protected Void doInBackground(Object... arg0) {
    if(arg0[0].equals("login")){
        output = "login";
        dologin();
    }
    return null;
}
为什么不仅仅是多洛金?您已经确保只有在有名称和密码时才执行,那么为什么还要执行另一个无用的检查呢

if ($aksi == "login"){
$a = mysql_query("select * from data_orangtua where email ='$email' and password = '$password'");
$jml = mysql_num_rows($a);
if ($jml == 0){
    $data[] = NULL;
}else{
    $data['login'] = array();
    while ($dt = mysql_fetch_array($a))
    {
        $h['id_orangtua']   = $dt['id_orangtua'] ;
        $h['nama']          = $dt['nama'] ;
        $h['email']         = $dt['email'] ;
        $h['password']      = $dt['password'];
        array_push($data["login"], $h);
    }
    $data["status"] = "Anda Berhasil Login";
    $data['success']= '1';
}
@Override
protected Void doInBackground(Object... arg0) {
    if(arg0[0].equals("login")){
        output = "login";
        dologin();
    }
    return null;
}