GPS 信号を取得し、結果をカスタム ビューに送信するフラグメントがあります。
フラグメントで取得した信号からの出力を表示し、正常に更新されていることを確認できます。fragment1 のコードは次のとおりです。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
RelativeLayout view = (RelativeLayout) inflater.inflate(R.layout.gps_stamp_fragment, container,false);
RelativeLayout rl1 = new RelativeLayout(view.getContext());
TextView tView1 = new TextView(view.getContext());
tView1.setText("waiting..."); //this is the only thing custom view gets!
rl1.addView(tView1);
rl1.setId(1);
tView1.setId(2);
view.addView (rl1);
lm =(LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 1, this);
return view;
}
//And here's where I get the GPS signal from and use setText again to update to the GPS signal.
@Override
public void onLocationChanged(Location arg0) {
String lat = String.valueOf(arg0.getLatitude());
RelativeLayout rl1 = (RelativeLayout) getView().findViewById(1);
TextView tView1 = (TextView) rl1.findViewById(2);
tView1.setText(lat);
}
次に、カスタム ビューには、相対レイアウトと関連するテキスト ビューを見つけてテキストを取得する次のコードがあります。
RelativeLayout rl1 = (RelativeLayout) getRootView().findViewById(1);
TextView tView1 = (TextView) rl1.findViewById(2);
tView1.getText();
getRootView().invalidate();
問題は、このカスタム ビューに表示される唯一のテキストが「待機中...」であることです。GPS 測定値は表示されません。
ビューを .invalidate() する必要があるという同様の質問を読んだので、最後の行を追加しましたが、これはうまくいかなかったようです。
Fragment1 から呼び出されたときに TextView が正しく更新されるのに、カスタム ビューから呼び出されたときに更新されないのはなぜですか?
ありがとう。