mmoamenn / LuckyWheel_Android

A custom component that displays a lucky wheel. it ⁠ features easy customize of colors, addition of items and it's very trivial to integrate in your application.
MIT License
127 stars 55 forks source link

I am getting null point exception error when using it on fragment. #14

Closed mamingjojo closed 4 years ago

mamingjojo commented 4 years ago

Hi,

Good day! hope you are doing well at this moment. Just so you know I am new to android development.

I'm not really sure of this is an issue or I am just missing something on my code. Would you mind taking a look of this?

Here is my MainActivity:

package com.example.foodpicker

import androidx.appcompat.app.AppCompatActivity import android.os.Bundle

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    supportFragmentManager.beginTransaction()
        .replace(R.id.mainViewFragment, SpinnerFragment())
        .commit()
}

}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity">

<FrameLayout
    android:id="@+id/mainViewFragment"
    android:layout_width="326dp"
    android:layout_height="458dp"
    app:layout_constraintBottom_toTopOf="@+id/button"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/spin"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/mainViewFragment" />

</androidx.constraintlayout.widget.ConstraintLayout>


SpinnerFragment package com.example.foodpicker

import android.graphics.BitmapFactory import android.graphics.Color import android.os.Bundle import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.bluehomestudio.luckywheel.LuckyWheel import com.bluehomestudio.luckywheel.WheelItem

import kotlinx.android.synthetic.main.fragment_spinner.*

/**

}


frament_spinner.xml <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".SpinnerFragment">

<com.bluehomestudio.luckywheel.LuckyWheel
    android:id="@+id/lwv"
    android:layout_width="250dp"
    android:layout_height="250dp"
    android:layout_centerInParent="true"
    app:background_color="@color/colorPrimary" />


And after doing those code I was stuck on this failure:

2020-05-20 16:39:46.751 9412-9412/com.example.foodpicker E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.foodpicker, PID: 9412 java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference at com.bluehomestudio.luckywheel.WheelView.onDraw(WheelView.java:232) at android.view.View.draw(View.java:21594) at android.view.View.updateDisplayListIfDirty(View.java:20471) at android.view.View.draw(View.java:21326) at android.view.ViewGroup.drawChild(ViewGroup.java:4413) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4174) at android.view.View.updateDisplayListIfDirty(View.java:20462) at android.view.View.draw(View.java:21326) at android.view.ViewGroup.drawChild(ViewGroup.java:4413) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4174) at android.view.View.updateDisplayListIfDirty(View.java:20462) at android.view.View.draw(View.java:21326) at android.view.ViewGroup.drawChild(ViewGroup.java:4413) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4174) at android.view.View.updateDisplayListIfDirty(View.java:20462) at android.view.View.draw(View.java:21326) at android.view.ViewGroup.drawChild(ViewGroup.java:4413) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4174) at android.view.View.updateDisplayListIfDirty(View.java:20462) at android.view.View.draw(View.java:21326) at android.view.ViewGroup.drawChild(ViewGroup.java:4413) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4174) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:2023) at android.view.View.updateDisplayListIfDirty(View.java:20462) at android.view.View.draw(View.java:21326) at android.view.ViewGroup.drawChild(ViewGroup.java:4413) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4174) at android.view.View.updateDisplayListIfDirty(View.java:20462) at android.view.View.draw(View.java:21326) at android.view.ViewGroup.drawChild(ViewGroup.java:4413) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4174) at android.view.View.updateDisplayListIfDirty(View.java:20462) at android.view.View.draw(View.java:21326) at android.view.ViewGroup.drawChild(ViewGroup.java:4413) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4174) at android.view.View.updateDisplayListIfDirty(View.java:20462) at android.view.View.draw(View.java:21326) at android.view.ViewGroup.drawChild(ViewGroup.java:4413) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4174) at android.view.View.updateDisplayListIfDirty(View.java:20462) at android.view.View.draw(View.java:21326) at android.view.ViewGroup.drawChild(ViewGroup.java:4413) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4174) at android.view.View.draw(View.java:21597) at com.android.internal.policy.DecorView.draw(DecorView.java:815) at android.view.View.updateDisplayListIfDirty(View.java:20471) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:580) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:586) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:659) at android.view.ViewRootImpl.draw(ViewRootImpl.java:3871) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3671) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2993) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1930) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7988) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1154) at android.view.Choreographer.doCallbacks(Choreographer.java:977) at android.view.Choreographer.doFrame(Choreographer.java:893) at android.view.Choreographer$FrameHandler.handleMessage(Choreographer.java:1082) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7682) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)


Your help will be greatly appreciated!

Thanks!

mamingjojo commented 4 years ago

Sorry to bother you. I already found what is wrong with my code. Its obviously in the SpinnerFragment.

I have to put the inflated layout view first in the onCreateView then call findViewById for my lucky wheel in the fragment_spinner.xml to avoid the null exception