kihiuFrank
kihiuFrank

Reputation: 121

How do I fix "java.lang.NumberFormatException: Invalid float: "16.0dip""

I'm parsing data from my BooksAdapter to BookDetailActivity and I am getting a NumberFormatException: Invalid float: 16.0dip error in my logcat.

I have searched the error online but I got only 3 search results which haven't been helpful.

'BookDetailActivity'
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_book_detail);

    Book book = getIntent().getParcelableExtra("Book");
}

'BooksAdapter'
@Override
    public void onClick(View v) {
        int position = getAdapterPosition();
        Book selectedBook = books.get(position);
        Intent intent = new Intent(v.getContext(), BookDetail.class);
        intent.putExtra("Book", selectedBook);
        v.getContext().startActivity(intent);
    }

I expected the BookDetailActivity to be launched after the user clicks on an item from the RecyclerView. Instead, the app crashes.

(java;no:11 from logcat) = setContentView(R.layout.activity_book_detail);

Error from log cat is:  

java.lang.RuntimeException: Unable to start activity ComponentInfo{www.frank.books/www.frank.books.BookDetail}: java.lang.NumberFormatException: Invalid float: "16.0dip" at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2429) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) at android.app.ActivityThread.access$800(ActivityThread.java:166) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5590) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1280) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1096) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NumberFormatException: Invalid float: "16.0dip" at java.lang.StringToReal.invalidReal(StringToReal.java:63) at java.lang.StringToReal.parseFloat(StringToReal.java:310) at java.lang.Float.parseFloat(Float.java:300) at android.content.res.TypedArray.getFloat(TypedArray.java:300) at android.support.constraint.ConstraintLayout$LayoutParams.(ConstraintLayout.java:2822) at android.support.constraint.ConstraintLayout.generateLayoutParams(ConstraintLayout.java:1972) at android.support.constraint.ConstraintLayout.generateLayoutParams(ConstraintLayout.java:482) at android.view.LayoutInflater.rInflate(LayoutInflater.java:770) at android.view.LayoutInflater.inflate(LayoutInflater.java:499) at android.view.LayoutInflater.inflate(LayoutInflater.java:398) at android.view.LayoutInflater.inflate(LayoutInflater.java:354) at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at www.frank.books.BookDetail.onCreate(BookDetail.java:11) at android.app.Activity.performCreate(Activity.java:5447) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) at android.app.ActivityThread.access$800(ActivityThread.java:166) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5590) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1280) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1096) at dalvik.system.NativeStart.main(Native Method)

  [1]: https://i.sstatic.net/DZoCS.png


book_detail.xml

    <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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=".BookDetail">

    <ImageView
        android:id="@+id/imgCover"
        android:layout_width="163dp"
        android:layout_height="184dp"
        android:layout_marginTop="@dimen/standard_margin"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tvAuthors"
        app:srcCompat="@drawable/book_open"
        android:contentDescription="@string/todo"
        android:layout_marginStart="@dimen/standard_margin"/>

    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/standard_margin"
        android:layout_marginTop="@dimen/standard_margin"
        android:layout_marginEnd="@dimen/standard_margin"
        android:text="@string/tv_title"
        android:textSize="36sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/tvAuthors"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/standard_margin"
        android:layout_marginTop="@dimen/standard_margin"
        android:layout_marginEnd="@dimen/standard_margin"
        android:text="@string/tv_subtitle"
        android:textSize="24sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tvTitle" />

    <TextView
        android:id="@+id/tv_authors"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/standard_margin"
        android:layout_marginTop="@dimen/standard_margin"
        android:text="@string/tv_author"
        android:textSize="18sp"
        app:layout_constraintStart_toEndOf="@+id/imgCover"
        app:layout_constraintTop_toBottomOf="@+id/tvAuthors" />

    <TextView
        android:id="@+id/tvPublisher"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/standard_margin"
        android:layout_marginTop="@dimen/standard_margin"
        android:text="@string/tv_publisher"
        android:textSize="16sp"
        app:layout_constraintStart_toEndOf="@+id/imgCover"
        app:layout_constraintTop_toBottomOf="@+id/tv_authors" />

    <TextView
        android:id="@+id/tvPublishedDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/standard_margin"
        android:layout_marginTop="@dimen/standard_margin"
        android:text="@string/tv_pub_date"
        android:textSize="16sp"
        app:layout_constraintStart_toEndOf="@+id/imgCover"
        app:layout_constraintTop_toBottomOf="@+id/tvPublisher" />

    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:layout_marginStart="@dimen/standard_margin"
        android:layout_marginTop="@dimen/standard_margin"
        android:layout_marginEnd="@dimen/standard_margin"
        android:text="@string/tv_detail"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="@dimen/standard_margin"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imgCover" />
</android.support.constraint.ConstraintLayout>

dimens.xml

    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="title_size">20sp</dimen>
    <dimen name="authors_size">18sp</dimen>
    <dimen name="published_date_padding">8dp</dimen>
    <dimen name="standard_margin">16dp</dimen>
</resources>

Upvotes: 0

Views: 473

Answers (1)

Mahdi-Malv
Mahdi-Malv

Reputation: 19250

Checkout this route: at java.lang.StringToReal.invalidReal(StringToReal.java:63) which says the class StringToReal at line 63 has a problem.

I think you have casted a string with value of 16.0dp to float which is invalid.

First clear the dp of it using something like:

String a = "16.0dp";
Strign newA = a.replace("dp", "");

and then try to cast it.

But since this is not your source to change, you should check where you have given output to this. check your dimens.xml and see where you have used invalid values.

Upvotes: 1

Related Questions