親アクティビティ:アンドロイド - Viewpager、特殊なアダプタのgetItem nullオブジェクト
public class FriendsActivity extends AppCompatActivity implements OnListChanged {
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setOffscreenPageLimit(4);
viewPager.setAdapter(myCustomTabAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tablayout);
tabLayout.setupWithViewPager(viewPager);
@Override
public void onListChanged()
{
MyFragment fragment = (FriendsFragment) tabAdapter.getItem(flag-1);
fragment.OnEventEditedAction(5, 5); // called
}
}
MyCustomTabAdapter:
@Override
public Fragment getItem(int position)
{
return MyFragment.NewInstance(position + 1);
}
MyFragment:
public class MyFragment extends Fragment implements OnEventEdited{
private OnListChanged onListChanged;
private SwipeRefreshLayout _swipeRefreshLayout;
@Override
public void OnEventEditedAction(int flag, int action)
{
**_swipeRefreshLayout.setRefreshing(true);** // null here
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try
{
onListChanged = (FriendsActivity) context;
}
catch (ClassCastException e)
{
}
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
// Setting swipeRefresh
_swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipeRefresh);
_swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
}
});
}
私がクリックしたときに、私はその後、私のフラグメント内のボタンを持っていますこのようなインターフェースを呼び出すボタンです。
public void onFriendListChanged()
そして、このイベントは私のフラグメントでイベントを呼び出しますが、このswiperefreshは仮想メソッド」を呼び出すため
試みnullの場合:
は、その後のイベントは私の親アクティビティに呼び出されますvoid android.support.v4.widget.SwipeRefreshLayout.setRefreshing(boolean) 'NULLオブジェクトリファレンスのonListChanged.EventListChanged();
私は4つのフラグメントのタブを持っていますが、フラグメントは同じ "MyFragment"ですが、リストは異なります。 viewpager(3)のリストが変更されたら、私はviewpager(1)に通知してリストを更新する必要があります。