Search code examples
javaandroidfatal-error

Calling method of class one to another class in android java?


Heys devs I have a quick question I have a method which is present in my MainActivity now I want to call that method in my LoginActivity. I have done this thing through getInstance but it give me an error which I share in below:

My method of calling : In my MainActivity I use :

private static MainActivity instance;
  instance = this;
 public static MainActivity getInstance() {
        return instance;
    }

In login activity I use:

  MainActivity.getInstance().checktag(cnic);

Logcat:

2020-12-02 16:22:03.897 12153-12153/info.androidhive.loginandregistration E/AndroidRuntime: FATAL EXCEPTION: main
    Process: info.androidhive.loginandregistration, PID: 12153
    android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@c69530c is not valid; is your activity running?
        at android.view.ViewRootImpl.setView(ViewRootImpl.java:679)
        at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342)
        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
        at android.app.Dialog.show(Dialog.java:322)
        at info.androidhive.loginandregistration.activity.MainActivity.showDialog(MainActivity.java:532)
        at info.androidhive.loginandregistration.activity.MainActivity.checkmtag(MainActivity.java:308)
        at info.androidhive.loginandregistration.activity.LoginActivity$2.onResponse(LoginActivity.java:163)
        at info.androidhive.loginandregistration.activity.LoginActivity$2.onResponse(LoginActivity.java:134)
        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:82)
        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:29)
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6119)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

Any fix of this problem?


Solution

  • You need to declare that function as public and static and you can call them anywhere from the application. example

    MainActivity.java

    public static void some(){
       //TODO something
    }
    

    LoginActivity.java

    MainActivity.some();