2017-12-25 78 views
0

私の目的は、MainActivityのProgressBarとTextViewにFragmentからアクセスすることです。しかし、私は以下のエラーが取得しています: 参照nullオブジェクト上で '無効 android.widget.ProgressBar.setVisibility(int型)' 仮想メソッドを呼び出すためにFragmentからDataBindingまでのアクティビティビューにアクセスするには?

試みを

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

オプション1

メイクプログレスバー、次いで様フラグメントからアクセス -

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

オプション2

((YourActivityClassName)getActivity()).yourPublicMethod(); 
+0

これは本当に悪いアプローチです。 OOPはどこですか? – nuhkoca

+0

イベントバスを使用します。パブリッシャーの購読者パターンまたは更新された回答を表示する –