I have login Method in LoginActivity which calling AsyncTask class methods .
That methods taking UserName And pass from SharedPrefrences Doing someQuery through SOAP webservice and return to reslut THE TeacherID if == 1 go Next activity .
But Once i Opened LoginActivity after Splash screen getting this LOG error :
LOG ERROR :
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.hesham.sams/com.hesham.sams.LoginActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2034)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
at android.app.ActivityThread.access$700(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:139)
at android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:65)
at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:142)
at android.app.AlertDialog$Builder.<init>(AlertDialog.java:359)
at com.hesham.sams.LoginActivity.<init>(LoginActivity.java:79)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1319)
at android.app.Instrumentation.newActivity(Instrumentation.java:1068)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2025)
... 11 more
LoginActivity :
loginBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ProgressDialog progressDialog = new ProgressDialog(
LoginActivity.this);
progressDialog.setMessage("جاري تسجيل الدخول الرجاء الانتظار");
progressDialog.show();
AsyncTaskWebServiceCaller MyTask = new AsyncTaskWebServiceCaller(
LoginActivity.this, progressDialog,
getApplicationContext());
MyTask.execute();
}
});
FULL AsnckTask Class :
public class AsyncTaskWebServiceCaller extends AsyncTask<Void, Void, String> {
Activity mActivity;
Context context;
// LoginActivity MyClass = new LoginActivity();
// public static Context contextOfApplication;
ProgressDialog progressDialog;
// Context applicationContext = LoginActivity.getContextOfApplication();
// Constractor
public AsyncTaskWebServiceCaller(Activity activity,
ProgressDialog progressDialog, Context context) {
super();
this.progressDialog = progressDialog;
this.mActivity = activity;
this.context = context;
}
// BackGround Process
@Override
protected String doInBackground(Void... voids) {
// this is executed in a background thread.
// the result is returned to the UI thread via onPostExecute
try {
final String NAMESPACE = "http://ws.sams.com";
final String URL = "http://88.198.82.92:8080/sams1/services/LoginActvityWs?WSDL"; // usint
// //
// localhost
final String METHOD_NAME = "login";
final String SOAP_ACTION = "http://ws.sams.com/login";
final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
final HttpTransportSE androidHttpTransport = new HttpTransportSE(
URL);
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this.mActivity);
String user = prefs.getString("login", null);
String pass = prefs.getString("password", null);
// Calling Login Method
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
// First Reques for USER NAME .
PropertyInfo pi = new PropertyInfo();
pi.setName("username");
pi.setValue(user);
pi.setType(String.class);
request.addProperty(pi);
// Second Reques for USER NAME .
PropertyInfo pi2 = new PropertyInfo();
pi2.setName("password");
pi2.setValue(pass);
pi2.setType(String.class);
request.addProperty(pi2);
// Getting Request Result , Will get TID .
envelope.setOutputSoapObject(request);
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
return response.toString();
} catch (XmlPullParserException e) {
return e.toString();
} catch (IOException e) {
return e.toString();
}
catch (NullPointerException e) {
return e.toString();
}
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(mActivity.getApplicationContext(), result,
Toast.LENGTH_LONG).show();
// If any error oceeared duaring get TID
if (result.equalsIgnoreCase("error")) {
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(
mActivity);
alertDialog.setTitle("يوجد مشكلة بالاتصال او السيرفر");
alertDialog.setMessage("هل تود المحاولة مجددا ؟ ");
// Retry Button Action
alertDialog.setPositiveButton("نعم",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
AsyncTaskWebServiceCaller asynTask = new AsyncTaskWebServiceCaller(
mActivity, progressDialog, mActivity
.getApplicationContext());
asynTask.execute();
}
});
// No Button Action
alertDialog.setNegativeButton("لا",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
progressDialog.dismiss();
}
});
alertDialog.show();
}
// IF pass or user Filed .
else if (Integer.parseInt(result.toString()) == 0) {
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(
mActivity);
alertDialog.setTitle("اسم المستخدم او كلمة المرور خاطئة");
alertDialog.setMessage("هل تود اعادة تسجيل الدخول ");
alertDialog.setPositiveButton("نعم",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
progressDialog.dismiss();
}
});
alertDialog.setNegativeButton("لا",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
progressDialog.dismiss();
Toast.makeText(mActivity.getApplicationContext(),
"thank you for using SAMS app",
Toast.LENGTH_LONG).show();
mActivity.finish();
}
});
alertDialog.show();
}
// For correct Login !
else {
Toast.makeText(mActivity.getApplicationContext(),
result.toString(), Toast.LENGTH_LONG).show();
progressDialog.dismiss();
if (Integer.parseInt(result.toString()) == 1) {
Intent intent1 = new Intent(mActivity, DashBoard.class);
mActivity.startActivity(intent1);
}
}
}
}