2013-07-26 65 views
3
Log cat error: 
07-26 05:36:53.271: E/AndroidRuntime(2435):  java.lang.NullPointerException 
07-26 05:36:53.271: E/AndroidRuntime(2435):  at com.example.servercommunication.tcpSocket.SendMessage(tcpSocket.java:135) 
07-26 05:36:53.271: E/AndroidRuntime(2435):  at com.example.suntrack1.ThirdActivity.SendLoginRequest(ThirdActivity.java:89) 
07-26 05:36:53.271: E/AndroidRuntime(2435):  at com.example.suntrack1.ThirdActivity$1.onClick(ThirdActivity.java:75) 
07-26 05:36:53.271: E/AndroidRuntime(2435):  at android.view.View.performClick(View.java:4204) 
07-26 05:36:53.271: E/AndroidRuntime(2435):  at android.view.View$PerformClick.run(View.java:17355) 
07-26 05:36:53.271: E/AndroidRuntime(2435):  at android.os.Handler.handleCallback(Handler.java:725) 
07-26 05:36:53.271: E/AndroidRuntime(2435):  at android.os.Handler.dispatchMessage(Handler.java:92) 
07-26 05:36:53.271: E/AndroidRuntime(2435):  at android.os.Looper.loop(Looper.java:137) 
07-26 05:36:53.271: E/AndroidRuntime(2435):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
07-26 05:36:53.271: E/AndroidRuntime(2435):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-26 05:36:53.271: E/AndroidRuntime(2435):  at java.lang.reflect.Method.invoke(Method.java:511) 
07-26 05:36:53.271: E/AndroidRuntime(2435):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
07-26 05:36:53.271: E/AndroidRuntime(2435):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
07-26 05:36:53.271: E/AndroidRuntime(2435):  at dalvik.system.NativeStart.main(Native Method) 

主程序:無法發送登錄請求到服務器

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.thirdactivity); 

    txtusername =(EditText)findViewById(R.id.emailid); 
    txtPassword =(EditText)findViewById(R.id.password); 

    loginBtn=(Button)findViewById(R.id.button1); 
    loginBtn.setOnClickListener(onClickListener); 
} 
@Override 
public void onBackPressed() { 
    // do nothing. 
} 
public void onPause() 
{ 
    super.onPause(); 
} 
public void onDestroy() 
{ 
    super.onDestroy(); 
} 

public void onResume() 
{ 
    super.onResume(); 
} 
private OnClickListener onClickListener = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     switch(v.getId()){ 
     case R.id.button1: 

      if(!AttemptLogin()) 
      { 
       SendLoginRequest(); 
      } 
      break; 
     } 
    }}; 

public void SendLoginRequest() 
{ 
pDialog = new ProgressDialog(this); 
pDialog.setMessage("Login in Progress.."); 
pDialog.setTitle("Please wait"); 
pDialog.show(); 
final String d =FramePacket.FrameLoginCmd(mUserID, mPassword); 
Log.d("Login Request :",d); 
tcpSocket.SendMessage(d); 

} 


@Override 
public void messageReceived(String message) { 
// TODO Auto-generated method stub 
Toast.makeText(getApplicationContext(), "Login activiyt : Recived data :"+message,   Toast.LENGTH_LONG).show(); 
if (message.contains("$107")) 
{ 
    final String [] data=message.split("\\~"); 
    //$107~1286~1~0~25-C~SuccessFul Login# 
    if(data[2].contains("1")) 
    { 
     pDialog.dismiss(); 
     StartLogin=false; 
     Contsants.TaxiNo=data[4]; 
     Toast.makeText(getApplicationContext(), data[5], Toast.LENGTH_LONG).show(); 
     Intent i = new Intent(getApplicationContext(),FourthActivity.class); 
     i.putExtra("_LOGINNAME", mUserID); 
     Contsants.cont_loggedinID=mUserID; 
     startActivity(i); 
    } 
    else 
    { 
     pDialog.dismiss(); 
     Toast.makeText(getApplicationContext(), "Login Failed Please Try again", Toast.LENGTH_LONG).show(); 
     StartLogin=false; 
    } 
} 

} 

boolean StartLogin=false; 
protected boolean AttemptLogin() { 
// TODO Auto-generated method stub 
boolean cancel=false; 
txtusername.setError(null); 
txtPassword.setError(null); 

mUserID = txtusername.getText().toString(); 
mPassword = txtPassword.getText().toString(); 

View focusView = null; 

// Check for a valid password. 
if (TextUtils.isEmpty(mUserID)) { 
    txtusername.setError(getString(R.string.error_field_required)); 
    focusView = txtusername; 
    cancel = true;    } 
    /*else if (mPassword.length() < 4) { 
    txtPassword.setError(getString(R.string.error_invalid_password)); 
    focusView = txtPassword; 
    cancel = true; 
}*/ 

// Check for a valid email address. 
else if (TextUtils.isEmpty(mPassword)) { 
    txtPassword.setError(getString(R.string.error_field_required)); 
    focusView = txtPassword; 
    cancel = true; 
} 

if (cancel) { 
    // There was an error; don't attempt login and focus the first 
    // form field with an error. 
    focusView.requestFocus(); 
} 
return cancel; 

} 

如果我點擊按鈕不幸應用程序停止日誌。登錄請求不發送到服務器。我不知道問題在哪裏。我發佈上面的日誌貓錯誤。請幫幫我。

+0

什麼是135行tcpSocket。 java嗎? – Raghunandan

+0

tcpSocket.java是將我們的請求發送到服務器的另一個類。 – RameshJaga

回答

0

似乎你final String d有錯誤,我認爲它null執行tcpSocket.SendMessage(d)

所以之前嘗試通過檢查final String d爲空或不是

所以你的代碼應該是下面的代碼

final String d =FramePacket.FrameLoginCmd(mUserID, mPassword); 
if(d!=null) 
{  
    Log.d("Login Request :",d); 
    tcpSocket.SendMessage(d); 
} 
else 
{ 
    Log.d("Login Request :","d is null"); 
} 
+0

發生同樣的錯誤。 – RameshJaga

+0

我可以發佈tcpScoket類 – RameshJaga

+0

@Rameshababu是的請! –