无法在Android应用中找到NullPointerException的原因。

问题描述 投票:0回答:1

我正在编程一个Android应用。一些用户得到一个 NullPointerException 但我找不到原因(在我的手机和6个不同的AVD上,它可以工作,但我不能重现这个异常,所以我可以在我的Android Studio中看看这个错误并在那里玩)。

PlayConsole为我的用户显示了这个错误日志。我的知识太少,无法从这个日志中得到原因。谁能看出原因?

错误日志。

java.lang.NullPointerException: 
  at de.schwembo.beercount.AuswertungFragment.onCreateView (AuswertungFragment.java:85)
  at androidx.fragment.app.Fragment.performCreateView (Fragment.java:2600)
  at androidx.fragment.app.FragmentManagerImpl.moveToState (FragmentManagerImpl.java:881)
  at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManagerImpl.java:1238)
  at androidx.fragment.app.FragmentManagerImpl.moveToState (FragmentManagerImpl.java:1303)
  at androidx.fragment.app.BackStackRecord.executeOps (BackStackRecord.java:439)
  at androidx.fragment.app.FragmentManagerImpl.executeOps (FragmentManagerImpl.java:2079)
  at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether (FragmentManagerImpl.java:1869)
  at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (FragmentManagerImpl.java:1824)
  at androidx.fragment.app.FragmentManagerImpl.execSingleAction (FragmentManagerImpl.java:1696)
  at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss (BackStackRecord.java:299)
  at androidx.fragment.app.FragmentPagerAdapter.finishUpdate (FragmentPagerAdapter.java:235)
  at androidx.viewpager.widget.ViewPager.populate (ViewPager.java:1244)
  at androidx.viewpager.widget.ViewPager.populate (ViewPager.java:1092)
  at androidx.viewpager.widget.ViewPager.onMeasure (ViewPager.java:1622)
  at android.view.View.measure (View.java:22286)
  at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6668)
  at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasureChild (CoordinatorLayout.java:760)
  at com.google.android.material.appbar.HeaderScrollingViewBehavior.onMeasureChild (HeaderScrollingViewBehavior.java:99)
  at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onMeasureChild (AppBarLayout.java:1892)
  at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasure (CoordinatorLayout.java:831)
  at android.view.View.measure (View.java:22286)
  at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6668)
  at android.widget.FrameLayout.onMeasure (FrameLayout.java:185)
  at androidx.appcompat.widget.ContentFrameLayout.onMeasure (ContentFrameLayout.java:143)
  at android.view.View.measure (View.java:22286)
  at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6668)
  at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1539)
  at android.widget.LinearLayout.measureVertical (LinearLayout.java:823)
  at android.widget.LinearLayout.onMeasure (LinearLayout.java:702)
  at android.view.View.measure (View.java:22286)
  at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6668)
  at android.widget.FrameLayout.onMeasure (FrameLayout.java:185)
  at android.view.View.measure (View.java:22286)
  at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6668)
  at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1539)
  at android.widget.LinearLayout.measureVertical (LinearLayout.java:823)
  at android.widget.LinearLayout.onMeasure (LinearLayout.java:702)
  at android.view.View.measure (View.java:22286)
  at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6668)
  at android.widget.FrameLayout.onMeasure (FrameLayout.java:185)
  at com.android.internal.policy.DecorView.onMeasure (DecorView.java:837)
  at android.view.View.measure (View.java:22286)
  at android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2646)
  at android.view.ViewRootImpl.measureHierarchy (ViewRootImpl.java:1674)
  at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1933)
  at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1558)
  at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7463)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1041)
  at android.view.Choreographer.doCallbacks (Choreographer.java:847)
  at android.view.Choreographer.doFrame (Choreographer.java:774)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1027)
  at android.os.Handler.handleCallback (Handler.java:809)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:166)
  at android.app.ActivityThread.main (ActivityThread.java:7555)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:469)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:963)

受影响的函数(AuswertungFragment.java:85)是这样的,它是在... onCreateView() 方法中初始化。

// Spinner for Months differentiation
spinnerMonat.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
       // IF statement for year/gesamt selection
       if (spinnerMonat.getSelectedItem().toString().equals(getString(R.string.gesamt))) {
           for (int i = 0; i < 12; i++) {
               alleDatenAusCursor = dataSource.zaehleAllesZuCursor(dataSource.getCursorFuerMonat(i + 1));
               anzahlZuMonate[i] = String.valueOf(alleDatenAusCursor[0]);
               preisZuMonate[i] = String.valueOf(alleDatenAusCursor[1]);
               mengeZuMonate[i] = String.valueOf(alleDatenAusCursor[2]);
           }
           fuelleLV4(monate, anzahlZuMonate, preisZuMonate, mengeZuMonate);
       } else {
           for (int i = 0; i < 12; i++) {
               alleDatenAusCursor = dataSource.zaehleAllesZuCursor(dataSource.getCursorFuerMonatJahr(spinnerMonat.getSelectedItem().toString(), i + 1));
               anzahlZuMonate[i] = String.valueOf(alleDatenAusCursor[0]);
               preisZuMonate[i] = String.valueOf(alleDatenAusCursor[1]);
               mengeZuMonate[i] = String.valueOf(alleDatenAusCursor[2]);
           }
           fuelleLV4(monate, anzahlZuMonate, preisZuMonate, mengeZuMonate);
       }
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) {
       for (int i = 0; i < 12; i++) {
           alleDatenAusCursor = dataSource.zaehleAllesZuCursor(dataSource.getCursorFuerMonat(i + 1));
           anzahlZuMonate[i] = String.valueOf(alleDatenAusCursor[0]);
           preisZuMonate[i] = String.valueOf(alleDatenAusCursor[1]);
           mengeZuMonate[i] = String.valueOf(alleDatenAusCursor[2]);
       }
       fuelleLV4(monate, anzahlZuMonate, preisZuMonate, mengeZuMonate);
    }
});

dataSource被初始化在 onCreate() 这样的方法。

dataSource = new DatabaseHandler(getActivity());

Spinner的初始化是这样的 onCreateView() 方法是这样的。

final Spinner spinnerMonat = rootView.findViewById(R.id.spinnerMonth2);

java android android-fragments nullpointerexception
1个回答
0
投票

问题是我有一个替代的Layout,不包括spinner的

© www.soinside.com 2019 - 2024. All rights reserved.