我正在 android 制作一个注册页面

I am making a registration page in android

我正在 android 中制作注册页面,使用 php 、 mysql n json... 我的应用程序在我点击 .execute() 的那一刻崩溃了……有人能给我一个解决方案吗……我知道我做错了什么……我正在从服务器收到响应……我已经测试过了它...

public class Signup extends Activity{

    private EditText et1,et2,et3,et4,et5;
    private Button bt1,bt2;

    ProgressDialog dialog;
    JSONParser jsonParser = new JSONParser();

    private static String url ="http://raictronics.com/script/register.php";
    private static String TAG1= "success", TAG2="message";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.signup);

        et1 =(EditText) findViewById(R.id.etv_username);
        et2 =(EditText) findViewById(R.id.etv_password);
        et3 =(EditText) findViewById(R.id.etv_retypepassword);
        et4 =(EditText) findViewById(R.id.etv_name);
        et5 =(EditText) findViewById(R.id.etv_mobile);

        bt1 = (Button) findViewById(R.id.back_mainmenu);
        bt2 = (Button) findViewById(R.id.confirm_signup);

        bt1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
            Intent i = new Intent(Signup.this, Login.class);
            startActivity(i);
            finish();
            }
        });

        bt2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                new JSONsignup().execute();
            }
        });

    }

    class JSONsignup extends AsyncTask<String, String, String>
    {   
        int success;

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            dialog = new ProgressDialog(Signup.this);
            dialog.setMessage("Creating User...");
            dialog.setIndeterminate(false);
            dialog.setCancelable(false);
            dialog.show();
        }

        @Override
        protected String doInBackground(String... params) {

            String i1= et1.getText().toString();
            String i2= et2.getText().toString();
            String i3= et3.getText().toString();
            String i4= et4.getText().toString();
            String i5= et5.getText().toString();

            try{
                List<NameValuePair> params1 = new ArrayList<NameValuePair>();
                params1.add(new BasicNameValuePair("username", i1));
                params1.add(new BasicNameValuePair("password", i2));
                params1.add(new BasicNameValuePair("password2", i3));
                params1.add(new BasicNameValuePair("name", i4));
                params1.add(new BasicNameValuePair("mobile", i5));

                Log.d("request!", "starting");

                JSONObject json = jsonParser.makeHttpRequest(url, "POST", params1);

                Log.d("Login attempt", json.toString());

                success = json.getInt(TAG1);
                if(success == 1)
                {
                    Log.d("User Created!", json.toString());
                    finish();
                    return json.getString(TAG2);

                }

                else{
                    Log.d("Login Failure!", json.getString(TAG2));
                    return json.getString(TAG2);
                }
            }
            catch(JSONException e)
            {
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(String file_url) {
            // TODO Auto-generated method stub

            dialog.dismiss();
            if(file_url != null)
            {
                Toast.makeText(getApplicationContext(), file_url, Toast.LENGTH_SHORT).show();
            }

        }

    }
}

而不是使用 getApplicationContext() 使用 Signup.this

您可以像这样将应用程序上下文传递到 AsyncTask class

 bt2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            new JSONSignup(Signup.this).execute();
        }


    });

然后像这样编辑您的 JSONSignup AsyncTask class:

class JSONSignup extends AsyncTask<Void, Void, Void>
    {
    Context context;
    ProgressDialog pDialog;

    JSONSignup(Context context) {
        this.context = context;
    }

    @Override
    protected void onPreExecute() {
       super.onPreExecute();
      // Showing progress dialog
      pDialog = new ProgressDialog(context);
      pDialog.setMessage("Please wait...");
      pDialog.setCancelable(false);
      pDialog.show();

   }
    ...

这是服务器端的错误。 当您从 json 解析器 class 中的 post 方法发出 http 请求时,return 值需要是一个 json 对象,这不是实际上。 你能为你的 URL 投保吗?

private static String url ="http://raictronics.com/script/register.php";

上面的URL无法访问,我在浏览器中测试过。 确保您的 php 脚本正常工作并且可以从客户端访问。