Introduction
Yes, it is tough . At least I think so ... To clarify the situation:
I did not find the answers to my question after searching the Internet (using Google).
All I found are people who customize onClickListenerfor their own View. I think this is the same problem in my case, but none of the other problems matched mine.
This seems to be the same problem ... It has no answers.
Customization
I have three Fragmentconfigured along with ViewPagerin mine AppCompatActivity.
viewPager = (ViewPager) findViewById(R.id.main_view_pager);
viewPager.setAdapter(new SectionsPagerAdapter(getSupportFragmentManager()));
Processed SectionsPagerAdapter.
public class SectionsPagerAdapter extends FragmentPagerAdapter {
SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return MainTextHolder.newInstance(tabIndicatorOnClick);
case 1:
return PostWriter.newInstance(tabIndicatorOnClick);
case 2:
return TopPage.newInstance(tabIndicatorOnClick);
default:
return Error.newInstance();
}
}
@Override
public int getCount() {
return 3;
}
}
In each of FragmentI have some content plus user-defined TabIndicator.
( xml - View )
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<View
android:id="@+id/fragment_divider_one"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:tag="one" />
<View
android:id="@+id/fragment_divider_two"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:tag="two" />
<View
android:id="@+id/fragment_divider_three"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:tag="three" />
</LinearLayout>
onClickListener View () Fragment onCreateView(LayoutInflater inflater, ViewGroup Bundle savedInstanceState). onClickListener Activity, my ViewPager, Item (Fragment/tab).
private final View.OnClickListener tabIndicatorOnClick = new View.OnClickListener() {
@Override
public void onClick(View view) {
if (view.getTag().toString().equals("one"))
viewPager.setCurrentItem(0, true);
else if (view.getTag().toString().equals("two"))
viewPager.setCurrentItem(1, true);
else if (view.getTag().toString().equals("three"))
viewPager.setCurrentItem(2, true);
}
};
onClickListener Fragment, newInstance(View.OnClickListener tabIndicatorOnClick).
. !
public static MainTextHolder newInstance(View.OnClickListener tabIndicatorOnClick) {
MainTextHolder fragment = new MainTextHolder();
Bundle args = new Bundle();
fragment.putIndicatorTabIndicatorOnClick(tabIndicatorOnClick);
fragment.setArguments(args);
fragment.setRetainInstance(true);
return fragment;
}
putIndicatorTabIndicatorOnClick(View.OnClickListener tabIndicatorOnClick) - Void Interface. onClickListener Class (Fragment).
@Override
public void putIndicatorTabIndicatorOnClick(View.OnClickListener tabIndicatorOnClick) {
this.tabIndicatorOnClick = tabIndicatorOnClick;
}
, . ... , ConfigurationChange. .
, ConfigurationChange , . onClickListener View Fragment, , tabIndicatorOnClick onClickListener Fragment.
, PostWriter TopPage onClickListener View - . : MainTextHolder Fragment tabIndicatorOnClick null object reference, ViewPager Item. , Tab.
" " ind , onClickListener null object references. , MainTextHolder.
ConfigurationChange onClickListener Fragment, , Fragment /a null object reference.
Activity .
...
... , . , .
minSdkVersion: 14
targetSdkVersion: 25
SpringIndicator ViewPager. onClickListener, "" , OnClick. , TabIndicator, .
, xml :onClick , onClickListener Fragment, , . - ViewPager Fragment, xml, , , , , . , . , .
onClickListener Fragment . , onClickListener, / null object reference.