I am implementing a code that based upon a particular response from a web service calls the next activity in my project. I am facing some problems regarding the same as it is resulting in a NullPointerException
Here is my Android code :
package com.example;
import java.net.SocketException;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class TeacherLogin2Activity extends Activity
{
private final String NAMESPACE = "http://tempuri.org/";
private final String URL = "http://10.0.2.2/loginteacher/Service1.asmx";
String t_id;
String password;
String ahead;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button signin = (Button) findViewById(R.id.regsubmitbtn);
signin.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText etxt_user = (EditText) findViewById(R.id.usereditlog);
t_id = etxt_user.getText().toString();
EditText etxt_password = (EditText) findViewById(R.id.pwdeditlog);
password = etxt_password.getText().toString();
new LoginTask().execute();
}
});
}
private String doLogin(String t_id, String password) {
String res=null;
final String SOAP_ACTION = "http://tempuri.org/GetLogin";
final String METHOD_NAME = "GetLogin";
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("teacherid", t_id);
request.addProperty("password",password);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true; // Set this variable to true for
// compatibility with what seems to be the
// default encoding for .Net-Services.
envelope.setOutputSoapObject(request);
System.out.println(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
Log.i("myApp", response.toString());
System.out.println("response" +response);
res=response.toString();
System.out.println(res);
}catch(SocketException ex)
{
Log.e("Error : " , "Error on soapPrimitiveData() " + ex.getMessage());
ex.printStackTrace();
}
catch (Exception e) {
Log.e("Error : " , "Error on soapPrimitiveData() " + e.getMessage());
e.printStackTrace();
}
return res;
}
private class LoginTask extends AsyncTask<Void, String, String> {
private final ProgressDialog dialog = new ProgressDialog(
TeacherLogin2Activity.this);
protected void onPreExecute() {
this.dialog.setMessage("Logging in...");
this.dialog.show();
}
protected String doInBackground(final Void... unused) {
String auth=doLogin(t_id,password);
System.out.println(auth);
return null; // don't interact with the ui!
}
protected void onPostExecute(String result)
{
ahead=result;
if(result.equals("Welcome to this activity")){
Intent showContent = new Intent(getApplicationContext(),newscreen.class);
startActivity(showContent);
}
if (this.dialog.isShowing()) {
this.dialog.dismiss();
}
}
}
}
updated Logcat showing Run Time Exception as well:
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): FATAL EXCEPTION: main
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.newscreen}: java.lang.NullPointerException
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at android.os.Handler.dispatchMessage(Handler.java:99)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at android.os.Looper.loop(Looper.java:123)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at android.app.ActivityThread.main(ActivityThread.java:4627)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at java.lang.reflect.Method.invokeNative(Native Method)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at java.lang.reflect.Method.invoke(Method.java:521)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at dalvik.system.NativeStart.main(Native Method)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): Caused by: java.lang.NullPointerException
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at com.example.newscreen.onCreate(newscreen.java:25)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
10-28 19:40:00.099: ERROR/AndroidRuntime(1001): ... 11 more
I have put all the required Internet permissions in my AndroidManifest.xml file ..Can someone help solve my problem?
result is coming as Null so it is throwing
Null Pointer Exception, try to print result and check what is coming using Log.Store result in Global variable and access it inside of Asyn task.
Eg:Declare Variable as
String final_result before of Activityand store result asfinal_result=resultthen Compare
final_result.equalsIgnoreCase("BLA BLA BLA");