Вставка данных в фрагменты из FragmentPagerAdapter сразу после запуска приложения
У меня есть приложение, которое заключается в перелистывании фрагментов на главном экране приложения. Не смотря на простоту, у меня возникает проблема. Суть в том, что эти фрагменты должны заполняться данными сразу после запуска приложения, но я не могу найти метод, который вызываеться ПОСЛЕ полного отображения фрагментов и приложения, но ПЕРЕД передачей управления приложением пользователь (то есть onResume() не подходит). Есть ли такой метод? Можно ли реализовать это как-то по другому?
MainActivity:
public class MainActivity extends AppCompatActivity {
private TableFragment MonFragment;
private TableFragment TueFragment;
private TableFragment WedFragment;
private TableFragment ThuFragment;
private TableFragment FriFragment;
private TableFragment SatFragment;
private TableFragment SunFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SectionsPagerAdapter pagerAdapter =
new SectionsPagerAdapter(getSupportFragmentManager());
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(pagerAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(pager);
}
@Override
protected void onResume() {
super.onResume();
MonFragment.setL8("123321"); //Попытка изменить значение в одном из EditText`ов на последней стадии создания приложения
}
private class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 7;
}
@Override
public Fragment getItem(int position) {
switch (position) { //Это фрагменты. В каждом из фрагментов 13 EditText`ов и кажый из них при запуски приложения нужно заполнить некоторыми значениями.
case 0:
return new TableFragment();
case 1:
return new TableFragment();
case 2:
return new TableFragment();
case 3:
return new TableFragment();
case 4:
return new TableFragment();
case 5:
return new TableFragment();
case 6:
return new TableFragment();
}
return null;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return getResources().getText(R.string.monday);
case 1:
return getResources().getText(R.string.tuesday);
case 2:
return getResources().getText(R.string.wednesday);
case 3:
return getResources().getText(R.string.thursday);
case 4:
return getResources().getText(R.string.friday);
case 5:
return getResources().getText(R.string.saturday);
case 6:
return getResources().getText(R.string.sunday);
}
return null;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment createdFragment = (Fragment) super.instantiateItem(container, position);
// save the appropriate reference depending on position
switch (position) {
case 0:
MonFragment = (TableFragment) createdFragment;
break;
case 1:
TueFragment = (TableFragment) createdFragment;
break;
case 2:
WedFragment = (TableFragment) createdFragment;
break;
case 3:
ThuFragment = (TableFragment) createdFragment;
break;
case 4:
FriFragment = (TableFragment) createdFragment;
break;
case 5:
SatFragment = (TableFragment) createdFragment;
break;
case 6:
SunFragment = (TableFragment) createdFragment;
break;
}
return createdFragment;
}
}
}
Код фрагментов (TableFragment):
public class TableFragment extends Fragment {
private EditText l8;
private EditText l9;
private EditText l10;
private EditText l11;
private EditText l12;
private EditText l13;
private EditText l14;
private EditText l15;
private EditText l16;
private EditText l17;
private EditText l18;
private EditText l19;
private EditText l20;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_table, container, false);
}
@Override
public void onStart() {
super.onStart();
l8 = (EditText)getActivity().findViewById(R.id.l8);
l9 = (EditText)getActivity().findViewById(R.id.l9);
l10 = (EditText)getActivity().findViewById(R.id.l10);
l11 = (EditText)getActivity().findViewById(R.id.l11);
l12 = (EditText)getActivity().findViewById(R.id.l12);
l13 = (EditText)getActivity().findViewById(R.id.l13);
l14 = (EditText)getActivity().findViewById(R.id.l14);
l15 = (EditText)getActivity().findViewById(R.id.l15);
l16 = (EditText)getActivity().findViewById(R.id.l16);
l17 = (EditText)getActivity().findViewById(R.id.l17);
l18 = (EditText)getActivity().findViewById(R.id.l18);
l19 = (EditText)getActivity().findViewById(R.id.l19);
l20 = (EditText)getActivity().findViewById(R.id.l20);
}
//SETTERS
public void setL8(String t8) {
l8.setText(t8);
}
public void setL9(String t9) {
l8.setText(t9);
}
public void setL10(String t10) {
l8.setText(t10);
}
public void setL11(String t11) {
l8.setText(t11);
}
public void setL12(String t12) {
l8.setText(t12);
}
public void setL13(String t13) {
l8.setText(t13);
}
public void setL14(String t14) {
l8.setText(t14);
}
public void setL15(String t15) {
l8.setText(t15);
}
public void setL16(String t16) {
l8.setText(t16);
}
public void setL17(String t17) {
l8.setText(t17);
}
public void setL18(String t18) {
l8.setText(t18);
}
public void setL19(String t19) {
l8.setText(t19);
}
public void setL20(String t20) {
l8.setText(t20);
}
}
Лог ошибки:
2021-03-07 18:55:36.413 6837-6837/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.trayvor.table, PID: 6837
java.lang.RuntimeException: Unable to resume activity {com.trayvor.table/com.trayvor.table.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.trayvor.table.TableFragment.setL8(java.lang.String)' on a null object reference
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4444)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4476)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.trayvor.table.TableFragment.setL8(java.lang.String)' on a null object reference
at com.trayvor.table.MainActivity.onResume(MainActivity.java:52) <----
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1456)
at android.app.Activity.performResume(Activity.java:8135)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4434)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4476)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)