turing-tech / MaterialScrollBar

An Android library that brings the Material Design 5.1 sidebar to pre-5.1 devices.
Apache License 2.0
781 stars 126 forks source link

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'char java.lang.Character.charValue()' on a null object reference #129

Open PankajSavaliya opened 5 years ago

PankajSavaliya commented 5 years ago

Getting error at AlphabetIndicator.java line 35 com.turingtechnologies.materialscrollbar.AlphabetIndicator.getTextElement

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'char java.lang.Character.charValue()' on a null object reference at com.turingtechnologies.materialscrollbar.AlphabetIndicator.getTextElement + 35(AlphabetIndicator.java:35) at com.turingtechnologies.materialscrollbar.AlphabetIndicator.getTextElement + 25(AlphabetIndicator.java:25) at com.turingtechnologies.materialscrollbar.Indicator.setText + 141(Indicator.java:141) at com.turingtechnologies.materialscrollbar.ScrollingUtilities.scrollHandleAndIndicator + 73(ScrollingUtilities.java:73) at com.turingtechnologies.materialscrollbar.MaterialScrollBar.onLayout + 309(MaterialScrollBar.java:309) at android.view.View.layout + 19693(View.java:19693) at android.view.ViewGroup.layout + 6079(ViewGroup.java:6079) at android.widget.RelativeLayout.onLayout + 1083(RelativeLayout.java:1083) at android.view.View.layout + 19693(View.java:19693) at android.view.ViewGroup.layout + 6079(ViewGroup.java:6079) at android.widget.RelativeLayout.onLayout + 1083(RelativeLayout.java:1083) at android.view.View.layout + 19693(View.java:19693) at android.view.ViewGroup.layout + 6079(ViewGroup.java:6079) at androidx.viewpager.widget.ViewPager.onLayout + 1775(ViewPager.java:1775) at android.view.View.layout + 19693(View.java:19693) at android.view.ViewGroup.layout + 6079(ViewGroup.java:6079) at android.widget.RelativeLayout.onLayout + 1083(RelativeLayout.java:1083) at android.view.View.layout + 19693(View.java:19693) at android.view.ViewGroup.layout + 6079(ViewGroup.java:6079) at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323) at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261) at android.view.View.layout + 19693(View.java:19693) at android.view.ViewGroup.layout + 6079(ViewGroup.java:6079) at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323) at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261) at android.view.View.layout + 19693(View.java:19693) at android.view.ViewGroup.layout + 6079(ViewGroup.java:6079) at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323) at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261) at android.view.View.layout + 19693(View.java:19693) at android.view.ViewGroup.layout + 6079(ViewGroup.java:6079) at android.widget.LinearLayout.setChildFrame + 1791(LinearLayout.java:1791) at android.widget.LinearLayout.layoutVertical + 1635(LinearLayout.java:1635) at android.widget.LinearLayout.onLayout + 1544(LinearLayout.java:1544) at android.view.View.layout + 19693(View.java:19693) at android.view.ViewGroup.layout + 6079(ViewGroup.java:6079) at com.jude.swipbackhelper.SwipeBackLayout.onLayout + 275(SwipeBackLayout.java:275) at android.view.View.layout + 19693(View.java:19693) at android.view.ViewGroup.layout + 6079(ViewGroup.java:6079) at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323) at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261) at com.android.internal.policy.DecorView.onLayout + 764(DecorView.java:764) at android.view.View.layout + 19693(View.java:19693) at android.view.ViewGroup.layout + 6079(ViewGroup.java:6079) at android.view.ViewRootImpl.performLayout + 2541(ViewRootImpl.java:2541) at android.view.ViewRootImpl.performTraversals + 2257(ViewRootImpl.java:2257) at android.view.ViewRootImpl.doTraversal + 1437(ViewRootImpl.java:1437) at android.view.ViewRootImpl$TraversalRunnable.run + 6886(ViewRootImpl.java:6886) at android.view.Choreographer$CallbackRecord.run + 1029(Choreographer.java:1029) at android.view.Choreographer.doCallbacks + 841(Choreographer.java:841) at android.view.Choreographer.doFrame + 772(Choreographer.java:772) at android.view.Choreographer$FrameDisplayEventReceiver.run + 1015(Choreographer.java:1015) at android.os.Handler.handleCallback + 794(Handler.java:794) at android.os.Handler.dispatchMessage + 99(Handler.java:99) at android.os.Looper.loop + 176(Looper.java:176) at android.app.ActivityThread.main + 6651(ActivityThread.java:6651) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run + 547(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main + 824(ZygoteInit.java:824)

TreeTeam commented 4 years ago

You can fix follow code:

import android.annotation.SuppressLint; import android.content.Context;

import com.turingtechnologies.materialscrollbar.AlphabetIndicator; import com.turingtechnologies.materialscrollbar.INameableAdapter; import com.turingtechnologies.materialscrollbar.Indicator;

@SuppressLint("ViewConstructor") class MyAlphabetIndicator extends Indicator<INameableAdapter, AlphabetIndicator> {

public MyAlphabetIndicator (Context c) {
    super(c, INameableAdapter.class);
}

@Override
protected String getTextElement(Integer currentSection, INameableAdapter adapter) {
    try {
        Character provided = adapter.getCharacterForElement(currentSection);
        return String.valueOf(Character.toUpperCase(provided));
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "";
}

@Override
protected int getIndicatorHeight() {
    return 75;
}

@Override
protected int getIndicatorWidth() {
    return 75;
}

@Override
protected int getTextSize() {
    return 40;
}

}