Java 应用程序已停止,请登录
每次我在登录时按下提交按钮,它就会关闭,我不知道这里有什么问题。。 …我正在使用XAMPP(MySql和Apache都已启动)。。 …我正在使用localhost/phpmyadmin …我的数据库名为“newdatabase” …我的登录表名为“mytable” …在“mytable”中是[ss_num]和[passs](它们是正确的(ss_num=username | passs=password)) 扩展活动中的公共类成员日志实现OnClickListener{Java 应用程序已停止,请登录,java,php,android,apache,login,Java,Php,Android,Apache,Login,每次我在登录时按下提交按钮,它就会关闭,我不知道这里有什么问题。。 …我正在使用XAMPP(MySql和Apache都已启动)。。 …我正在使用localhost/phpmyadmin …我的数据库名为“newdatabase” …我的登录表名为“mytable” …在“mytable”中是[ss_num]和[passs](它们是正确的(ss_num=username | passs=password)) 扩展活动中的公共类成员日志实现OnClickListener{ private Edit
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
私有编辑文本用户,通过;
私人按钮mSubmit,mRegister;
JSONParser JSONParser=新的JSONParser();
私有静态最终字符串登录\u URL=”http://192.168.1.7/adrx/logins.php";
私有静态最终字符串标记_SUCCESS=“SUCCESS”;
私有静态最终字符串标记_MESSAGE=“MESSAGE”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u member\u\u log\u in);
user=(EditText)findViewById(R.id.username);
pass=(EditText)findViewById(R.id.password);
mSubmit=(按钮)findviewbyd(R.id.bLogin);
mSubmit.setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
如果(v==mSubmit){
新建loglogin().execute();
}
}
类loglogin扩展了异步任务{
字符串username=user.getText().toString();
字符串密码=pass.getText().toString();
@凌驾
受保护的字符串doInBackground(字符串…args){
成功;
试一试{
List params=new ArrayList();
添加(新的BasicNameValuePair(“ss_num”,用户名));
添加(新的BasicNameValuePair(“passs”,password));
JSONObject json=jsonParser.makeHttpRequest(登录URL,“POST”,参数);
//Log.d(“请求!”,“启动”);
Log.d(“登录尝试”,json.toString());
success=json.getInt(TAG_success);
如果(成功==1){
Log.d(“登录成功!”,json.toString();
Toast.makeText(getApplicationContext(),“SUCCESS!”,Toast.LENGTH\u SHORT.show();
返回json.getString(TAG_消息);
}否则{
Log.d(“登录失败!”,json.getString(TAG_MESSAGE));
Toast.makeText(getApplicationContext(),“失败!”,Toast.LENGTH\u SHORT.show();
返回json.getString(TAG_消息);
}
}捕获(JSONException e){
e、 printStackTrace();
}
返回null;
}
}
}
//结束
错误日志
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
12-18 22:10:36.133:E/AndroidRuntime(9954):致命异常:AsyncTask#1
12-18 22:10:36.133:E/AndroidRuntime(9954):java.lang.RuntimeException:执行doInBackground()时出错
12-18 22:10:36.133:E/AndroidRuntime(9954):在android.os.AsyncTask$3.done(AsyncTask.java:299)
12-18 22:10:36.133:E/AndroidRuntime(9954):在java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
12-18 22:10:36.133:E/AndroidRuntime(9954):位于java.util.concurrent.FutureTask.setException(FutureTask.java:219)
12-18 22:10:36.133:E/AndroidRuntime(9954):在java.util.concurrent.FutureTask.run(FutureTask.java:239)
12-18 22:10:36.133:E/AndroidRuntime(9954):在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
12-18 22:10:36.133:E/AndroidRuntime(9954):位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
12-18 22:10:36.133:E/AndroidRuntime(9954):位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
12-18 22:10:36.133:E/AndroidRuntime(9954):在java.lang.Thread.run(Thread.java:838)
12-18 22:10:36.133:E/AndroidRuntime(9954):原因:java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序
12-18 22:10:36.133:E/AndroidRuntime(9954):在android.os.Handler.(Handler.java:205)
12-18 22:10:36.133:E/AndroidRuntime(9954):在android.os.Handler.(Handler.java:119)
12-18 22:10:36.133:E/AndroidRuntime(9954):在android.widget.Toast$TN.(Toast.java:324)
12-18 22:10:36.133:E/AndroidRuntime(9954):在android.widget.Toast.(Toast.java:91)
12-18 22:10:36.133:E/AndroidRuntime(9954):在android.widget.Toast.makeText(Toast.java:238)上
12-18 22:10:36.133:E/AndroidRuntime(9954):在com.example.citizensharterss.Member_Log_In$loglogin.doInBackground(Member_Log_In.java:118)
12-18 22:10:36.133:E/AndroidRuntime(9954):在com.example.citizensharterss.Member_Log_In$loglogin.doInBackground(Member_Log_In.java:1)
12-18 22:10:36.133:E/AndroidRuntime(9954):在android.os.AsyncTask$2.call(AsyncTask.java:287)
12-18 22:10:36.133:E/AndroidRuntime(9954):在java.util.concurrent.FutureTask.run(FutureTask.java:234)
12-18 22:10:36.133:E/AndroidRuntime(9954):。。。4更多
您不能在后台线程中触摸UI。例如,您不能在异步任务doInBackground()
中显示Toast
s
您可以使用
runOnUiThread()
将Runnable
发布到UI线程,或者将调试从Toast更改为常规日志记录。Toast是UI,与所有UI一样,只能在主UI线程上操作
我建议使用(我没有参与这个项目,但在生产应用程序中已经使用了一段时间)发布登录任务的结果,并让您的活动在UI线程上侦听这些事件,您可以在UI线程中修改UI。给我们错误日志,以便更快地查看问题所在。您是否获得了internet许可证