android-fragments - 如何通过 DataBinding 从 Fragment 访问 Activity View ?

标签 android-fragments android-activity data-binding

我的目标是从 Fragment 访问 MainActivity 的 ProgressBar 和 TextView。但是,我收到以下错误:

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>

示例片段.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);

}

篡改了很多帖子,文章,但无法实现。提前致谢。

最好的事物,

最佳答案

Option 1



使进度条在 Activity 上保持静态
然后从片段访问 -
if(MainActivity.progressbar!=null){
MainActivity.progressbar.setVisibility(View.Gone);
//or whatever do you want
} 

Option 2


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

关于android-fragments - 如何通过 DataBinding 从 Fragment 访问 Activity View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47969793/

相关文章:

android - ViewModel 在导航导航中没有被清除,并且 viewmodel 中的实时数据保持 Activity 状态

android - fitsSystemWindows 在添加的 fragment 中不起作用

android - Android 中的 Activity 和 list

c# - 为什么 Bound Textbox 不修改其关联属性,而 Text 值是以编程方式设置的?

android - DialogFragment 的简单示例 - 示例代码不适合我

java - 对应用程序上下文的引用是否会泄漏我保留的 fragment ?

java - 当启动的 Activity 完成时,启动新 Activity 的 startActivityForResult 是否通知调用 Activity?

android - 如何从 Activity 的包含类启动 Intent

WPF MVVM : How to setup binding on user controls?

javascript - 如何将复选框值数据绑定(bind)到 Javascript 对象