FragmentPagerAdapter に 3 つのページがあり、(pageradapter ではなく) 別のフラグメントから longClick イベントをキャッチしようとし、このイベントを使用してテキストビューのテキストを変更します。MainActivity の arraylist にフラグメントを保存すると、ある程度は機能しましたが、arraylist を削除して既存のフラグメントを pageradapter から取得して、arraylist からフラグメントが消えるという問題を修正しようとしました。まったく変更されません (以前は一部変更されていました)。
関連する部分は次のとおりです (Tushar の要求に従って、最も関連性の高い部分のみを持ってきます。コードを理解するために他に何か必要な場合は、それを言及してください。追加します):
@Override
public void onLocationSelected(String location) {
setCurrentLocation(location);
Fragment frag;
for (int i = adapter.getCount() - 1; i >= 0; i--) {
frag = adapter.getItem(i);
if (frag instanceof LocationChangedListener) {
((LocationChangedListener) frag).onLocationChanged();
}
}
}
private class WeatherAppPagerAdapter extends FragmentPagerAdapter {
private String[] titles;
public WeatherAppPagerAdapter(FragmentManager fm) {
super(fm);
titles = getResources().getStringArray(R.array.titles);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new OptionsFrag();
case 1:
return new ConditionsFrag();
case 2:
return new ForcastFrag();
default:
return null;
}
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}
私の TextView はいくつかのテキストを必死に必要としているので、これが私を助けるのに役立つことを願っています。
編集: TextView がテキストを取得する場所は次のとおりです。
@Override
public void onLocationChanged() {
if (view == null) {
return;
}
((TextView) view.findViewById(R.id.tvLocationName)).setText(mainActivity
.getCurrentLocation());
}