点击安卓中的登录按钮

clicking login button in android

本文关键字:登录 按钮      更新时间:2023-09-26

嗨,在我的应用程序中,我正在开发聊天应用程序。在其中,我为姓名和手机号码创建了两个编辑文本框,并创建了一个名为登录的按钮。如果单击登录按钮,我的应用程序崩溃并显示此错误。

登录片段

public class LoginFragment extends Fragment {
    SharedPreferences prefs;
    EditText name, mobno;
    Button login;
    List<NameValuePair> params;
    ProgressDialog progress;
    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.login_fragment, container, false);
        prefs = getActivity().getSharedPreferences("Chat", 0);
        name = (EditText)view.findViewById(R.id.name);
        mobno = (EditText)view.findViewById(R.id.mobno);
        login = (Button)view.findViewById(R.id.log_btn);
        progress = new ProgressDialog(getActivity());
        progress.setMessage("Registering ...");
        progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        progress.setIndeterminate(true);

        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                progress.show();
                SharedPreferences.Editor edit = prefs.edit();
                edit.putString("REG_FROM", mobno.getText().toString());
                edit.putString("FROM_NAME", name.getText().toString());
                edit.commit();
                new Login().execute();
            }
        });
        return view;
    }
    private class Login extends AsyncTask<String, String, JSONObject> {
        @Override
        protected JSONObject doInBackground(String... args) {
            JSONParser json = new JSONParser();
            params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("name[]", name.getText().toString()));
            params.add(new BasicNameValuePair("mobno[]", mobno.getText().toString()));
            params.add((new BasicNameValuePair("reg_id[]",prefs.getString("REG_ID",""))));
            JSONObject jObj = json.getJSONFromUrl("http://10.0.2.2/login",params);
            return jObj;

        }
        @Override
        protected void onPostExecute(JSONObject json) {
            progress.dismiss();
            try {
                String res = json.getString("response");
                if(res.equals("Sucessfully Registered")) {
                    Fragment reg = new UserFragment();
                    FragmentTransaction ft = getFragmentManager().beginTransaction();
                    ft.replace(R.id.content_frame, reg);
                    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                    ft.addToBackStack(null);
                    ft.commit();
                }else{
                    Toast.makeText(getActivity(),res,Toast.LENGTH_SHORT).show();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }

对于服务器端,这是文件

请求.js

var request = require('request');
var mysql = require('mysql');
var connection = mysql.createConnection(
    {
      host     : 'localhost',
      user     : 'root',
      password : '',
      database : 'chat',
    }
);
connection.connect();

exports.login = function(name,mobno,reg_id,callback) {
var data = {
            name    : name,
            mobno :  mobno,
            reg_id   : reg_id

        };
var que = "SELECT * from users WHERE mobno =" + mobno;
 var query = connection.query(que, function(err, rows)
        {
          if(rows.length == 0){
            var query = connection.query("INSERT INTO users set ? ",data, function(err, rows)
        {
          callback({'response':"Sucessfully Registered"});
        });
          }else {
           callback({'response':"User already Registered"});
          }
        });

}

exports.getuser = function(mobno,callback) {

 var query = connection.query("SELECT * from users", function(err, rows)
        {
          if(rows.length == 0){
            callback({'response':"No Users Registered"});
          }else {
          callback(removeUser(rows, mobno));
          }
        });
}

exports.removeuser = function(mobno,callback) {
var que = "DELETE FROM users  WHERE mobno =" + mobno;
var query = connection.query(que, function(err, rows)
        {
             if(!err){
    callback({'response':"Removed Sucessfully"});
  }else{
    callback({'response':"Error"});
  }  
        });
}

exports.send = function(fromn,fromu,to,msg,callback) {
var que = "SELECT * from users WHERE mobno =" + to;
 var query = connection.query(que, function(err, rows)
        {
          if(rows.length == 0){
            callback({'response':"Failure"});
          }else {

    var to_id = rows[0].reg_id;
    var name = rows[0].name;
request(
    { method: 'POST', 
    uri: 'https://android.googleapis.com/gcm/send',
    headers: {
        'Content-Type': 'application/json',
        'Authorization':'key=AIzaSyAHX3FkhjGf-2IzEND49K8ysVvZSji60lE'
    },
    body: JSON.stringify({
  "registration_ids" : [to_id],
  "data" : {
    "msg":msg,
    "fromu":fromu,
    "name":fromn
  },
  "time_to_live": 108
})
    }
  , function (error, response, body) {
      callback({'response':"Success"});
    }
  )
}});
}
function removeUser(arr, val) {
    for(var i=0; i<arr.length; i++) {
        if(arr[i].mobno == val) {
            arr.splice(i, 1);
            return arr;
            break;
        }
    }
}

日志猫错误

12-23 01:28:05.529: E/Buffer Error(1739): Error converting result java.lang.NullPointerException: lock == null
12-23 01:28:05.529: E/JSON Parser(1739): Error parsing data org.json.JSONException: End of input at character 0 of 
12-23 01:28:05.579: I/Choreographer(1739): Skipped 42 frames!  The application may be doing too much work on its main thread.
12-23 01:28:05.809: D/AndroidRuntime(1739): Shutting down VM
12-23 01:28:05.809: W/dalvikvm(1739): threadid=1: thread exiting with uncaught exception (group=0xb2a32ba8)
12-23 01:28:05.819: E/AndroidRuntime(1739): FATAL EXCEPTION: main
12-23 01:28:05.819: E/AndroidRuntime(1739): Process: com.example.androidchat, PID: 1739
12-23 01:28:05.819: E/AndroidRuntime(1739): java.lang.NullPointerException
12-23 01:28:05.819: E/AndroidRuntime(1739):     at com.example.androidchat.LoginFragment$Login.onPostExecute(LoginFragment.java:83)
12-23 01:28:05.819: E/AndroidRuntime(1739):     at com.example.androidchat.LoginFragment$Login.onPostExecute(LoginFragment.java:1)
12-23 01:28:05.819: E/AndroidRuntime(1739):     at android.os.AsyncTask.finish(AsyncTask.java:632)
12-23 01:28:05.819: E/AndroidRuntime(1739):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
12-23 01:28:05.819: E/AndroidRuntime(1739):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
12-23 01:28:05.819: E/AndroidRuntime(1739):     at android.os.Handler.dispatchMessage(Handler.java:102)
12-23 01:28:05.819: E/AndroidRuntime(1739):     at android.os.Looper.loop(Looper.java:136)
12-23 01:28:05.819: E/AndroidRuntime(1739):     at android.app.ActivityThread.main(ActivityThread.java:5017)
12-23 01:28:05.819: E/AndroidRuntime(1739):     at java.lang.reflect.Method.invokeNative(Native Method)
12-23 01:28:05.819: E/AndroidRuntime(1739):     at java.lang.reflect.Method.invoke(Method.java:515)
12-23 01:28:05.819: E/AndroidRuntime(1739):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-23 01:28:05.819: E/AndroidRuntime(1739):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-23 01:28:05.819: E/AndroidRuntime(1739):     at dalvik.system.NativeStart.main(Native Method)

将此行从

callback({'response':"Sucessfully Registered"});

callback({"response":"Sucessfully Registered"});

键和值都应该有双引号 (")。希望对你有帮助