だから私は3つのフラグメントを持つViewPagerを持っています。中央のものでは、GPS が無効になっている場合は TextView を Visible に設定し、有効になっている場合は非表示にします。GPS モジュールの可用性の変化に対応するために、私は次のようなことをしています:
@Override
public void onProviderDisabled(String provider) {
if (provider.equals(LocationManager.GPS_PROVIDER)) {
// gps deactivated, sucks dude
GPS_ACTIVE = false;
((Nearby) mTabsAdapter.getItem(1)).notifyGpsDeactivated();
}
}
@Override
public void onProviderEnabled(String provider) {
if (provider.equals(LocationManager.GPS_PROVIDER)) {
// gps activated, start again!
GPS_ACTIVE = true;
((Nearby) mTabsAdapter.getItem(1)).notifyGpsActivated();
}
}
「近くの」フラグメントでは、次のようになります。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_nearby, null, false);
int VISIBLE = (SHOW_GPS_NOTIFICATION) ? View.VISIBLE : View.GONE;
Log.d("Nearby", "Show gps not? " + SHOW_GPS_NOTIFICATION);
view.findViewById(R.id.nearby_notification_activategps).setVisibility(
VISIBLE);
return view;
}
public void notifyGpsActivated() {
SHOW_GPS_NOTIFICATION = false;
if (view != null)
view.findViewById(R.id.nearby_notification_activategps)
.setVisibility(View.VISIBLE);
else
Log.d("Nearby", "View is null :(");
}
public void notifyGpsDeactivated() {
Log.d("Nearby", "Gps deactivated.");
SHOW_GPS_NOTIFICATION = true;
if (view != null)
view.findViewById(R.id.nearby_notification_activategps)
.setVisibility(View.VISIBLE);
else
Log.d("Nearby", "View is null :(");
}
- ビューは Nearby クラスのプライベート変数です。後で通知メソッドで使用するために、ビューへの参照を onCreateView に保存していますが、ビューは常に null です。フラグメントのメソッドで「getView()」でビューを取得しようとしましたが、それもnullでした。この問題を解決する方法を教えてください。また、アプリケーションの一時停止中に GPS を有効にすると、「onProviderEnabled()」が機能しないようです。onResume で利用可能な GPS プロバイダーも確認する必要がありますか?
ありがとう!
ええ、ところで、テスト目的のためだけに、とにかく表示されないため、両方の値を VISIBLE に設定しました-テキストビューが表示されることはありません..そうではありません。:)