-1
안녕하세요. 내 애플리케이션에서 채팅으로 application.In을 개발하고 있는데, 이름과 휴대폰 번호에 대한 두 개의 edittext 상자와 로그인 버튼 하나를 만들었습니다. 로그인 버튼을 클릭하면 응용 프로그램이 다운되고이 오류가 표시됩니다.android에서 로그인 버튼을 클릭하십시오.
LoginFragment
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();
}
}
}
서버 측에이 파일을
request.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)
줄을 내게로 83, onpostexecute – Elltz
시도 {this is line 83 – master