I have a SimpleAdapter in my home screen, where it's getView() method is being called at a weird time. In my onOptionsItemSelected function, I have a logout option.

            case R.id.menu_admin_home_logout:
                finish();
                Intent f = new Intent(HomeScreen.this, LoginScreen.class);
                f.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(f);
                return true;

When I select this logout menu item, I would expect:

  1. onPause()
  2. onStop()
  3. onDestroy()

Instead, I receive the following:

  1. onPause() called
  2. Home Screen Activity is closed ( visually only - confirmed this with a breakpoint after finish() )
  3. Login screen is shown
  4. The Home Screen activity's SimpleAdapter getView() method is called.
  5. Fatal Exception

All of the Home Screen's variables are null when getView() is called. The onStop() and onDestroy() class methods are never called due to the crash. Just in case of a duplicate activity running, I checked for the onResume() method being called after onPause() - it is not being called. So, I think this rules out duplicate activity possibility.

Note: This seems to be an issue with Android API 30, (OS 11). I don't have the issue on my personal device, which is running OS 12. My client has this crash, and my new emulator (also API 30), crashes here as well. I also didn't have this issue in the past with OS's 9 and 10, so just 11 as far as I can see.

Thoughts on this? I posted the full crash below.

For now, I am just surrounding the method's content with a try/catch and returning the view. I consider this to be a band-aid solution, and highly prefer to find and solve the root issue.

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equalsIgnoreCase(java.lang.String)' on a null object reference
    at com.xxx.xxx.activity_screens.HomeScreen$1.getView(HomeScreen.java:250)
    at android.widget.AbsListView.obtainView(AbsListView.java:2387)
    at android.widget.ListView.makeAndAddView(ListView.java:2067)
    at android.widget.ListView.fillSpecific(ListView.java:1492)
    at android.widget.ListView.layoutChildren(ListView.java:1802)
    at android.widget.AbsListView.onLayout(AbsListView.java:2184)
    at android.view.View.layout(View.java:22844)
    at android.view.ViewGroup.layout(ViewGroup.java:6389)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
    at android.view.View.layout(View.java:22844)
    at android.view.ViewGroup.layout(ViewGroup.java:6389)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
    at android.view.View.layout(View.java:22844)
    at android.view.ViewGroup.layout(ViewGroup.java:6389)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
    at android.view.View.layout(View.java:22844)
    at android.view.ViewGroup.layout(ViewGroup.java:6389)
    at androidx.appcompat.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:530)
    at android.view.View.layout(View.java:22844)
    at android.view.ViewGroup.layout(ViewGroup.java:6389)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
    at android.view.View.layout(View.java:22844)
    at android.view.ViewGroup.layout(ViewGroup.java:6389)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
    at android.view.View.layout(View.java:22844)
    at android.view.ViewGroup.layout(ViewGroup.java:6389)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
    at com.android.internal.policy.DecorView.onLayout(DecorView.java:784)
    at android.view.View.layout(View.java:22844)
    at android.view.ViewGroup.layout(ViewGroup.java:6389)
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3470)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2938)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1952)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8171)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)
    at android.view.Choreographer.doCallbacks(Choreographer.java:796)
    at android.view.Choreographer.doFrame(Choreographer.java:731)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
0

There are 0 best solutions below