2014-12-23 3 views
-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) 
+0

줄을 내게로 83, onpostexecute – Elltz

+0

시도 {this is line 83 – master

답변

0

변화

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

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

에서이 라인은 모두 키와 값 ("")을 두 번 견적이 있어야합니다. 도움이 되었으면 좋겠다

+0

안녕하세요 Nirav도 다음과 같은 오류가 발생했습니다. – master

관련 문제