nuhkoca
nuhkoca

Reputation: 1943

How to access to Activity views from Fragment through DataBinding?

My aim is to access MainActivity's ProgressBar and TextView from a Fragment. However, I am getting the error below:

Attempt to invoke virtual method 'void android.widget.ProgressBar.setVisibility(int)' on a null object reference

activity_main.xml

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="200dp"
            android:orientation="vertical"
            android:layout_gravity="center">

        <ProgressBar
            android:id="@+id/pbLoading"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:indeterminate="true"
            android:layout_gravity="center"
            android:visibility="visible"/>

        <TextView
            android:id="@+id/tvLoading"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="@dimen/dimension_8dp"
            android:fontFamily="@font/robotomedium"
            android:textSize="16sp"
            android:visibility="visible"
            android:text="@string/loading_text"/>

        </LinearLayout>

SampleFragment.java

 @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        fragmentDataBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_currency_list, container, false);

        return Objects.requireNonNull(fragmentDataBinding).getRoot();
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        mPbLoading = fragmentDataBinding.getRoot().findViewById(R.id.pbLoading);
        mPbLoading.setVisibility(View.GONE);

}

Tampered with lots of posts, articles but couldn't achieve it. Thanks in advance.

Best,

Upvotes: 4

Views: 2461

Answers (1)

Md.ibrahim khalil
Md.ibrahim khalil

Reputation: 479

Option 1

make progressbar static on activity and then access from fragment like -

if(MainActivity.progressbar!=null){
MainActivity.progressbar.setVisibility(View.Gone);
//or whatever do you want
} 

Option 2

((YourActivityClassName)getActivity()).yourPublicMethod(); 

Upvotes: 3

Related Questions