ViewPagerにある3つのフラグメントを作成しました。特定のフラグメントがユーザーに表示されている場合にのみ、サーバーからデータを取得しようとしています。そのために、setUserVisibleHint()でWebサービスメソッドを呼び出しました。しかし、私はそのメソッド内でgetActivity()を使用しているときにNullPointerExceptionを取得しています。データを一度だけ読み込み、そのデータをユーザーに表示する方法を確認するにはどうすればよいですか?ここでは、コード:getActivity()を呼び出すときにsetUserVisibleHint()がNullPointerExceptionをスローする
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser && !_areLecturesLoaded){
if(getActivity() == null){ //this is always null
Log.e("Fragment1","No Activity");
}else{
getLatLong();
}
_areLecturesLoaded = true;
}
}
private void getLatLong() {
mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
// The next two lines tell the new client that “this” current class will handle connection stuff
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
//fourth line adds the LocationServices API endpoint from GooglePlayServices
.addApi(LocationServices.API)
.build();
}
私はONATTACH()メソッドはsetUserVisibleHint(後に呼び出さなっていることを確認しました)。アクティビティが添付される前に、setUserVisibleHint()が起動しています。
チェックチェックするにはgetActivity() '.call' isAdded() 'を呼び出します。 – Adithya
onUttach()メソッドの前にsetUserVisibleHint()が呼び出されています。つまり、フラグメントが添付される前に、setUserVisibleHint()メソッドが起動されます。どうすればこの問題を解決できますか? –
私の答えを参照してください私はいくつかのコードを追加します – max