不幸的是,当onclick事件在android中运行时,应用程序已经停止
我有一个应用程序,它通过android中的EditText获取输入,并通过php服务将这些值发送回数据库。php服务是正确的。但是它发送一个给定的错误。为什么不幸的是,当onclick事件在android中运行时,应用程序已经停止,android,Android,我有一个应用程序,它通过android中的EditText获取输入,并通过php服务将这些值发送回数据库。php服务是正确的。但是它发送一个给定的错误。为什么 05-07 22:36:25.882: D/ActivityThread(21174): handleBindApplication:com.example.pgfinder 05-07 22:36:25.932: W/ApplicationPackageManager(21174): getCSCPackageItemText() 05
05-07 22:36:25.882: D/ActivityThread(21174): handleBindApplication:com.example.pgfinder
05-07 22:36:25.932: W/ApplicationPackageManager(21174): getCSCPackageItemText()
05-07 22:36:25.932: D/DisplayManager(21174): DisplayManager()
05-07 22:36:26.233: D/OpenGLRenderer(21174): Enabling debug mode 0
05-07 22:36:26.303: I/Timeline(21174): Timeline: Activity_idle id: android.os.BinderProxy@41e5bc30 time:53798431
05-07 22:36:27.784: I/Timeline(21174): Timeline: Activity_launch_request id:com.example.pgfinder time:53799926
05-07 22:36:27.814: W/ApplicationPackageManager(21174): getCSCPackageItemText()
05-07 22:36:28.094: I/Timeline(21174): Timeline: Activity_idle id: android.os.BinderProxy@41ebc438 time:53800237
05-07 22:36:28.705: D/AndroidRuntime(21174): Shutting down VM
05-07 22:36:28.705: W/dalvikvm(21174): threadid=1: thread exiting with uncaught exception (group=0x41689bc0)
05-07 22:36:28.715: E/AndroidRuntime(21174): FATAL EXCEPTION: main
05-07 22:36:28.715: E/AndroidRuntime(21174): Process: com.example.pgfinder, PID: 21174
05-07 22:36:28.715: E/AndroidRuntime(21174): java.lang.NullPointerException
05-07 22:36:28.715: E/AndroidRuntime(21174): at com.example.pgfinder.Signup$2.onClick(Signup.java:64)
05-07 22:36:28.715: E/AndroidRuntime(21174): at android.view.View.performClick(View.java:4496)
05-07 22:36:28.715: E/AndroidRuntime(21174): at android.view.View$PerformClick.run(View.java:18603)
05-07 22:36:28.715: E/AndroidRuntime(21174): at android.os.Handler.handleCallback(Handler.java:733)
05-07 22:36:28.715: E/AndroidRuntime(21174): at android.os.Handler.dispatchMessage(Handler.java:95)
05-07 22:36:28.715: E/AndroidRuntime(21174): at android.os.Looper.loop(Looper.java:136)
05-07 22:36:28.715: E/AndroidRuntime(21174): at android.app.ActivityThread.main(ActivityThread.java:5433)
05-07 22:36:28.715: E/AndroidRuntime(21174): at java.lang.reflect.Method.invokeNative(Native Method)
05-07 22:36:28.715: E/AndroidRuntime(21174): at java.lang.reflect.Method.invoke(Method.java:515)
05-07 22:36:28.715: E/AndroidRuntime(21174): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
05-07 22:36:28.715: E/AndroidRuntime(21174): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
05-07 22:36:28.715: E/AndroidRuntime(21174): at dalvik.system.NativeStart.main(Native Method)
05-07 22:36:29.916: I/Process(21174): Sending signal. PID: 21174 SIG: 9
05-07 22:36:30.066: D/ActivityThread(21305): handleBindApplication:com.example.pgfinder
05-07 22:36:30.096: W/ApplicationPackageManager(21305): getCSCPackageItemText()
05-07 22:36:30.096: D/DisplayManager(21305): DisplayManager()
05-07 22:36:30.247: D/OpenGLRenderer(21305): Enabling debug mode 0
05-07 22:36:30.287: I/Timeline(21305): Timeline: Activity_idle id: android.os.BinderProxy@41e570a8 time:53802425
代码是
package com.example.pgfinder;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.example.pgfinder.handler.ServiceHandler;
import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Signup extends ActionBarActivity
{
EditText Name,Email,Phone,Password,Confirm_Password,City;
Button backBtn, signupBtn;
String name,email,phone,password,c_password,city,jsonFormat;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.signup);
backBtn=(Button) findViewById(R.id.back);
signupBtn=(Button) findViewById(R.id.signup);
backBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
Intent in = new Intent(getApplicationContext(), MainActivity.class);
startActivity(in);
Name=(EditText) findViewById(R.id.name);
Email=(EditText) findViewById(R.id.email);
Phone=(EditText) findViewById(R.id.phone);
Password=(EditText) findViewById(R.id.password);
Confirm_Password=(EditText) findViewById(R.id.confirm_password);
City=(EditText) findViewById(R.id.city);
}
});
signupBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
name=Name.getText().toString();
email=Email.getText().toString();
phone=Phone.getText().toString();
password=Password.getText().toString();
c_password=Confirm_Password.getText().toString();
city=City.getText().toString();
if (name.equals("") || email.equals(""))
{
Toast.makeText(getApplicationContext(),
"Enter FirstName & Email", 5000).show();
} else {
new SignupTask()
.execute("www.webpage.com/usersignup.php");
}
}
});
}
class SignupTask extends AsyncTask<String, Void, String>
{
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
Log.i("TAG", "URL : " + params[0]);
Log.i("TAG", "registerStr : " + name);
ServiceHandler sh = new ServiceHandler();
List<NameValuePair> nameValuePairsList = new ArrayList<NameValuePair>();
nameValuePairsList.add(new BasicNameValuePair("name", name));
nameValuePairsList.add(new BasicNameValuePair("email", email));
nameValuePairsList.add(new BasicNameValuePair("phone", phone));
nameValuePairsList.add(new BasicNameValuePair("city", city));
nameValuePairsList.add(new BasicNameValuePair("password", password));
nameValuePairsList.add(new BasicNameValuePair("c_password", c_password));
String res = sh.makeServiceCall(params[0], ServiceHandler.GET,
nameValuePairsList);
Log.i("TAG", "RESPONSE : " + res);
return res;
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
protected void onPostExecute(String result) {
super.onPostExecute(result);
JSONObject jObject;
try
{
jObject = new JSONObject(result);
//String response = jObject.getString("success").toString();
Toast.makeText(getApplicationContext(), result, 3000).show();
if (jObject.getString("success").toString()
.equalsIgnoreCase("1")) {
Toast.makeText(getApplicationContext(),
"done", 3000).show();
} else {
Toast.makeText(getApplicationContext(),
"fuck off", 3000).show();
}
}
catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
package com.example.pgfinder;
导入java.util.ArrayList;
导入java.util.List;
导入org.apache.http.NameValuePair;
导入org.apache.http.message.BasicNameValuePair;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入com.example.pgfinder.handler.ServiceHandler;
导入android.support.v7.app.ActionBarActivity;
导入android.content.Intent;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Toast;
公共类注册扩展了ActionBarActivity
{
编辑文本名称、电子邮件、电话、密码、确认密码、城市;
按钮backBtn,signupBtn;
字符串名称、电子邮件、电话、密码、c_密码、城市、jsonFormat;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.signup);
backBtn=(按钮)findViewById(R.id.back);
signupBtn=(按钮)findviewbyd(R.id.signup);
backBtn.setOnClickListener(新的OnClickListener()
{
@凌驾
公共void onClick(视图v)
{
//TODO自动生成的方法存根
Intent in=新的Intent(getApplicationContext(),MainActivity.class);
星触觉(in);
Name=(EditText)findViewById(R.id.Name);
Email=(EditText)findviewbyd(R.id.Email);
Phone=(EditText)findViewById(R.id.Phone);
密码=(EditText)findViewById(R.id.Password);
确认密码=(EditText)findViewById(R.id.Confirm\u Password);
城市=(编辑文本)findViewById(R.id.City);
}
});
signupBtn.setOnClickListener(新的OnClickListener()
{
@凌驾
公共void onClick(视图){
//TODO自动生成的方法存根
name=name.getText().toString();
email=email.getText().toString();
phone=phone.getText().toString();
password=password.getText().toString();
c_password=Confirm_password.getText().toString();
city=city.getText().toString();
if(name.equals(“”)| email.equals(“”)
{
Toast.makeText(getApplicationContext(),
“输入名字和电子邮件”,5000)。show();
}否则{
新注册任务()
.execute(“www.webpage.com/usersignup.php”);
}
}
});
}
类SignupTask扩展了异步任务
{
@凌驾
受保护的字符串doInBackground(字符串…参数){
//TODO自动生成的方法存根
Log.i(“标记”,“URL:+params[0]);
Log.i(“标记”、“寄存器tr:+名称”);
ServiceHandler sh=新的ServiceHandler();
List nameValuePairsList=新建ArrayList();
添加(新的BasicNameValuePairsList(“name”,name));
nameValuePairsList.add(新的BasicNameValuePairs(“email”,email));
nameValuePairsList.add(新的BasicNameValuePairs(“电话”,phone));
nameValuePairsList.add(新的BasicNameValuePairs(“城市”,城市));
添加(新的BasicNameValuePair(“密码”,password));
添加(新的BasicNameValuePairs(“c_密码”,c_密码));
String res=sh.makeServiceCall(参数[0],ServiceHandler.GET,
nameValuePairsList);
Log.i(“标签”,“响应:+res”);
返回res;
}
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
}
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
JSONObject jObject;
尝试
{
jObject=新的JSONObject(结果);
//字符串响应=jObject.getString(“成功”).toString();
makeText(getApplicationContext(),result,3000).show();
if(jObject.getString(“success”).toString()
.equalsIgnoreCase(“1”)){
Toast.makeText(getApplicationContext(),
“完成”,3000)。显示();
}否则{
Toast.makeText(getApplicationContext(),
“滚开”,3000)show();
}
}
捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
}
您的代码中有几个错误。这些是:
05-07 22:36:28.715:E/AndroidRuntime(21174):在
com.example.pgfinder.Signup$2.onClick(Signup.java:64)
看到你的logcat,你的第一个问题就在这里
signupBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
}
});
您需要发布您的XML布局,以便我们能够准确地知道您在哪里犯了错误。您可能在XML中有一个不同的按钮id,并试图访问其他id。但不确定。你需要先发布你的布局
你也应该把这一切都搬走
Name=(EditText) findViewById(R.id.name);
Email=(EditText) findViewById(R.id.email);
Phone=(EditText) findViewById(R.id.phone);
Password=(EditText) findViewById(R.id.password);
Confirm_Password= (EditText)findViewById(R.id.confirm_password);
City=(EditText) findViewById(R.id.city);
在setOnClickListener
like之前
Name=(EditText) findViewById(R.id.name);
Email=(EditText) findViewById(R.id.email);
Phone=(EditText) findViewById(R.id.phone);
Password=(EditText) findViewById(R.id.password);
Confirm_Password=(EditText)findViewById (R.id.confirm_password);
City=(EditText) findViewById(R.id.city);
backBtn.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
}
});
另外,让您的Toast
方法
Toast.makeText(MainActivity.class,"Enter FirstName & Email",Toast.LENGTH_LONG).show();
根据您的需要更改为长或短
我不知道为什么单击“后退”按钮时会出现intent
。为什么?
Intent in = new Intent(getApplicationContext(), MainActivity.class);
startActivity(in);
位于com.example.pgfinder.Signu