如何通过DataBinding从Fragment访问Activity视图?

4
我的目标是从一个Fragment访问MainActivity的ProgressBar和TextView。然而,我收到以下错误提示: “尝试在null对象引用上调用虚拟方法'void android.widget.ProgressBar.setVisibility(int)'”
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);

}

我曾试图篡改很多帖子和文章,但都没有成功。提前感谢您。

祝好,

1个回答

3
选项1:将进度条设置为静态,然后从片段中访问 -
if(MainActivity.progressbar!=null){
MainActivity.progressbar.setVisibility(View.Gone);
//or whatever do you want
} 

Option 2

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

2
这确实是一种糟糕的方法。面向对象在哪里? - nuhkoca
然后使用事件总线。它是发布订阅模式,或查看更新的答案。 - Md.ibrahim khalil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接