Giphy / giphy-android-sdk

Home of the GIPHY SDK Android example app, along with Android SDK documentation, issue tracking, & release notes.
https://developers.giphy.com/
Mozilla Public License 2.0
91 stars 40 forks source link

Giphy does not inflate my GiphyGridView in a fragment. #179

Closed sambhav2358 closed 2 years ago

sambhav2358 commented 2 years ago

🐛 Bug Report


Giphy does not inflate my GiphyGridView in a fragment.

I am making a chat app and I that I want to add custom giphy layout. So I used Giphy Grid View. But it is not inflating inside a fragment. I also saw this but it does not work. See the code below.

XML Code

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".Fragments.PickGifFragment"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/top"
        android:layout_marginTop="@dimen/_20sdp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/rounded_gray_bg"
        android:paddingHorizontal="@dimen/_7sdp"
        android:paddingVertical="@dimen/_5sdp"
        android:layout_marginHorizontal="@dimen/_10sdp">

        <EditText
            android:id="@+id/searchQuery"
            android:layout_width="0dp"
            android:layout_height="@dimen/_24sdp"
            android:layout_weight="1"
            android:background="@android:color/transparent"
            android:hint="Search Giphy"
            android:textSize="@dimen/_12sdp"
            android:textColorHint="#AAAAAA"
            android:textColor="@color/black" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginHorizontal="@dimen/_10sdp"
        android:layout_marginTop="@dimen/_15sdp">

        <TextView
            android:textStyle="bold"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/gif_item_selected"
            android:text="GIFs"
            android:gravity="center"
            android:paddingHorizontal="@dimen/_13sdp"
            android:paddingVertical="@dimen/_5sdp"
            android:textColor="#525252"
            android:layout_marginHorizontal="@dimen/_5sdp"
            android:textSize="@dimen/_12sdp"/>

        <View
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="1"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginHorizontal="@dimen/_5sdp"
            android:background="@drawable/gif_item_normal"
            android:gravity="center"
            android:paddingHorizontal="@dimen/_13sdp"
            android:paddingVertical="@dimen/_5sdp"
            android:text="Stickers"
            android:textColor="#525252"
            android:textSize="@dimen/_12sdp"
            android:textStyle="bold" />

        <View
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="1"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/gif_item_normal"
            android:text="Text"
            android:gravity="center"
            android:textStyle="bold"
            android:paddingHorizontal="@dimen/_13sdp"
            android:paddingVertical="@dimen/_5sdp"
            android:textColor="#525252"
            android:layout_marginHorizontal="@dimen/_5sdp"
            android:textSize="@dimen/_12sdp"/>

        <View
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="1"/>

        <TextView
            android:textStyle="bold"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/gif_item_normal"
            android:text="Emoji"
            android:gravity="center"
            android:paddingHorizontal="@dimen/_13sdp"
            android:paddingVertical="@dimen/_5sdp"
            android:textColor="#525252"
            android:layout_marginHorizontal="@dimen/_5sdp"
            android:textSize="@dimen/_12sdp"/>

    </LinearLayout>

    <com.giphy.sdk.ui.views.GiphyGridView
        android:id="@+id/gifsGridView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:layout_marginTop="@dimen/_10sdp"
        app:gphDirection="horizontal"
        app:gphSpanCount="2"
        app:gphCellPadding="12dp"
        app:gphShowCheckeredBackground="false"/>

</LinearLayout>

My Fragment


import android.os.Bundle;

import androidx.annotation.Nullable; import androidx.fragment.app.Fragment;

import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup;

import com.giphy.sdk.ui.Giphy; import com.sk.telegram.R; import com.sk.telegram.databinding.FragmentPickGifBinding;

public class PickGifFragment extends Fragment {

FragmentPickGifBinding b;

public PickGifFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    b = FragmentPickGifBinding.inflate(getLayoutInflater());
    Giphy.INSTANCE.configure(getContext(),"MY_VALID_API_KEY(IT IS VERIFIED)");
    return b.getRoot();
}

}


> And now finally the error.

android.view.InflateException: Binary XML file line #109 in com.sk.telegram:layout/fragment_pick_gif: Binary XML file line #109 in com.sk.telegram:layout/fragment_pick_gif: Error inflating class com.giphy.sdk.ui.views.GiphyGridView Caused by: android.view.InflateException: Binary XML file line #109 in com.sk.telegram:layout/fragment_pick_gif: Error inflating class com.giphy.sdk.ui.views.GiphyGridView Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at android.view.LayoutInflater.createView(LayoutInflater.java:852) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1121) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082) at android.view.LayoutInflater.inflate(LayoutInflater.java:680) at android.view.LayoutInflater.inflate(LayoutInflater.java:532) at com.sk.telegram.databinding.FragmentPickGifBinding.inflate(FragmentPickGifBinding.java:55) at com.sk.telegram.databinding.FragmentPickGifBinding.inflate(FragmentPickGifBinding.java:49) at com.sk.telegram.Fragments.PickGifFragment.onCreateView(PickGifFragment.java:32) at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2963) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:518) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:112) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1647) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3128) at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3072) at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:251) at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:502) at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:246) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1435) at android.app.Activity.performStart(Activity.java:8231) at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3861) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2325) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:246) at android.app.ActivityThread.main(ActivityThread.java:8633) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) Caused by: android.view.InflateException: Binary XML file line #8 in com.sk.telegram:layout/gph_grid_view: Binary XML file line #8 in com.sk.telegram:layout/gph_grid_view: Error inflating class com.giphy.sdk.ui.universallist.SmartGridRecyclerView Caused by: android.view.InflateException: Binary XML file line #8 in com.sk.telegram:layout/gph_grid_view: Error inflating class com.giphy.sdk.ui.universallist.SmartGridRecyclerView Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at android.view.LayoutInflater.createView(LayoutInflater.java:852) E/AndroidRuntime: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1121) at android.view.LayoutInflater.inflate(LayoutInflater.java:654) at android.view.LayoutInflater.inflate(LayoutInflater.java:532) at android.view.LayoutInflater.inflate(LayoutInflater.java:479) at com.giphy.sdk.ui.databinding.GphGridViewBinding.inflate(GphGridViewBinding.java:39) at com.giphy.sdk.ui.views.GiphyGridView.(GiphyGridView.kt:113) at com.giphy.sdk.ui.views.GiphyGridView.(GiphyGridView.kt:28) at com.giphy.sdk.ui.views.GiphyGridView.(Unknown Source:6) at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at android.view.LayoutInflater.createView(LayoutInflater.java:852) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1121) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082) at android.view.LayoutInflater.inflate(LayoutInflater.java:680) at android.view.LayoutInflater.inflate(LayoutInflater.java:532) at com.sk.telegram.databinding.FragmentPickGifBinding.inflate(FragmentPickGifBinding.java:55) at com.sk.telegram.databinding.FragmentPickGifBinding.inflate(FragmentPickGifBinding.java:49) at com.sk.telegram.Fragments.PickGifFragment.onCreateView(PickGifFragment.java:32) at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2963) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:518) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:112) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1647) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3128) at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3072) at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:251) at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:502) at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:246) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1435) at android.app.Activity.performStart(Activity.java:8231) at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3861) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2325) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:246) at android.app.ActivityThread.main(ActivityThread.java:8633) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) Caused by: kotlin.UninitializedPropertyAccessException: lateinit property apiClient has not been initialized at com.giphy.sdk.core.GiphyCore.getApiClient(GiphyCore.kt:13) at com.giphy.sdk.ui.universallist.SmartGridRecyclerView.(SmartGridRecyclerView.kt:44) at com.giphy.sdk.ui.universallist.SmartGridRecyclerView.(SmartGridRecyclerView.kt:37) at com.giphy.sdk.ui.universallist.SmartGridRecyclerView.(Unknown Source:6) ... 49 more


Please help me because Giphy documentation shows code only for `Kotlin` not for `Java`. Thanks in advance
ALexanderLonsky commented 2 years ago

Hey @sambhav2358, You should call Giphy.INSTANCE.configure(getContext(),"MY_VALID_API_KEY(IT IS VERIFIED)"); right before b = FragmentPickGifBinding.inflate(getLayoutInflater());

We do have Java documentation.

And there are 2 options to integrate GiphyGridView, you can find it here.

Also, I prepared a sample Java project:

GiphyFragmentGridView.zip

sambhav2358 commented 2 years ago

Ok thanks. I will check it out. Actually I had searched a lot but could not find the java docs

sambhav2358 commented 2 years ago

Brilliant!!!!! It just removed my errors!!!! Thanks a lot from my ♥️.