应用程序已停止,LOGIN

时间:2014-12-18 14:06:09

标签: java php android apache login

每次我按下登录时的“提交”按钮,它就会关闭,我不知道这里有什么问题。 ..我正在使用XAMPP(MySql和Apache都已启动).. ..我正在使用localhost / phpmyadmin ..my数据库名为“newdatabase” ..my用于登录的表名为“mytable” ..inside“mytable”是[ss_num]和[passs](这些是正确的(ss_num =用户名|密码=密码))

public class Member_Log_In extends Activity实现OnClickListener {

 private EditText user, pass;

     private Button mSubmit, mRegister;

     JSONParser jsonParser = new JSONParser();
     private static final String LOGIN_URL = "http://192.168.1.7/adrx/logins.php";
     private static final String TAG_SUCCESS = "success";
     private static final String TAG_MESSAGE = "message";


     @Override

         protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_member__log__in);

             user = (EditText)findViewById(R.id.username);
             pass = (EditText)findViewById(R.id.password);
             mSubmit = (Button)findViewById(R.id.bLogin);

             mSubmit.setOnClickListener(this);



         }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
    if(v==mSubmit){

        new loglogin().execute();

    }


    }


     class loglogin extends AsyncTask<String, String, String> {

          String username = user.getText().toString();

            String password = pass.getText().toString();


                @Override

                protected String doInBackground(String... args) {

                    int success;


                    try {

                        List<NameValuePair> params = new ArrayList<NameValuePair>();

                        params.add(new BasicNameValuePair("ss_num", username));
                        params.add(new BasicNameValuePair("passs", password));

                      JSONObject json = jsonParser.makeHttpRequest(LOGIN_URL, "POST", params);

                       // Log.d("request!", "starting");
                        Log.d("Login attempt", json.toString());

                        success = json.getInt(TAG_SUCCESS);

                        if (success == 1) {


                            Log.d("Login Successful!", json.toString());
                            Toast.makeText(getApplicationContext(), "SUCCESS!", Toast.LENGTH_SHORT).show();

                            return json.getString(TAG_MESSAGE);

                        }else{


                            Log.d("Login Failure!", json.getString(TAG_MESSAGE));
                            Toast.makeText(getApplicationContext(), "FAILED!", Toast.LENGTH_SHORT).show();

                            return json.getString(TAG_MESSAGE);

                        }

                    } catch (JSONException e) {

                        e.printStackTrace();

                    }

                    return null;

                }
  }
                }
//end

ERRORLOG

12-18 22:10:36.133: E/AndroidRuntime(9954): FATAL EXCEPTION: AsyncTask #1
12-18 22:10:36.133: E/AndroidRuntime(9954): java.lang.RuntimeException: An error occured while executing doInBackground()
12-18 22:10:36.133: E/AndroidRuntime(9954):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at java.lang.Thread.run(Thread.java:838)
12-18 22:10:36.133: E/AndroidRuntime(9954): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
12-18 22:10:36.133: E/AndroidRuntime(9954):     at android.os.Handler.<init>(Handler.java:205)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at android.os.Handler.<init>(Handler.java:119)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at android.widget.Toast$TN.<init>(Toast.java:324)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at android.widget.Toast.<init>(Toast.java:91)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at android.widget.Toast.makeText(Toast.java:238)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at com.example.citizenschartersss.Member_Log_In$loglogin.doInBackground(Member_Log_In.java:118)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at com.example.citizenschartersss.Member_Log_In$loglogin.doInBackground(Member_Log_In.java:1)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
12-18 22:10:36.133: E/AndroidRuntime(9954):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
12-18 22:10:36.133: E/AndroidRuntime(9954):     ... 4 more

2 个答案:

答案 0 :(得分:0)

您无法在后台线程中触摸UI。例如,您无法在异步任务Toast中显示doInBackground()

您可以使用runOnUiThread()Runnable发布到UI线程,或者只是将调试从toast更改为常规日志记录。

答案 1 :(得分:0)

Toast是UI,就像所有UI只能在主UI线程上操作一样。

我建议使用https://github.com/greenrobot/EventBus(我没有参与此项目,但已在生产应用程序中使用它一段时间)发布登录任务的结果并让您的活动监听这些事件在UI线程上,您可以在其中修改UI。