Мне нужно вызвать метод фрагмента, который возвращает массив String в моей родительской Activity.
class MyAsyncTaskOthers2 extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... voids) {
Intent intent = getIntent();
Database db = App.getInstance().getDatabase();
if(db.classDao().doesGroupExist(intent.getStringExtra(Others.EXTRA_DATA))){
ClassEntity new_group=new ClassEntity();
new_group.id_of_a_group= intent.getStringExtra(Others.EXTRA_DATA);
new_group.monday=mon2Fragment.Text_getter();
db.classDao().insert(new_group);
}
if(!db.classDao().doesGroupExist(intent.getStringExtra(Others.EXTRA_DATA))){
db.classDao().update(mon2Fragment.Text_getter(),intent.getStringExtra(Others.EXTRA_DATA));
}
return null;
}
}
После того, как я нажимаю кнопку «сохранить», я получаю ошибку NPE, и она указывает на
new_group.monday=mon2Fragment.Text_getter();
Вот мой код:
public class Others2 extends AppCompatActivity {
private Button button;
private ViewPager viewPager;
private Toolbar toolbar;
private Mon2Fragment mon2Fragment;
MyAsyncTaskOthers2 mt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_others2);
button=findViewById(R.id.buttonSave);
toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.ic_back);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mt=new MyAsyncTaskOthers2();
mt.execute();
}
});
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), Others.class));
}
});
viewPager = findViewById(R.id.viewpager);
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager(), 6);
viewPager.setOffscreenPageLimit(5);
adapter.AddFragment(new Mon2Fragment(), "Mon");
adapter.AddFragment(new Tue2Fragment(), "Tue");
adapter.AddFragment(new Wed2Fragment(), "Wed");
adapter.AddFragment(new Thu2Fragment(), "Thu");
adapter.AddFragment(new Fri2Fragment(), "Fri");
viewPager.setAdapter(adapter);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch(item.getItemId()){
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public String sendData(){
Intent intent = getIntent();
return intent.getStringExtra(Others.EXTRA_DATA);
}
public String[] sendDataM(){
Intent intent=getIntent();
return intent.getStringArrayExtra("my_stringm");
}
class MyAsyncTaskOthers2 extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... voids) {
Intent intent = getIntent();
Database db = App.getInstance().getDatabase();
if(db.classDao().doesGroupExist(intent.getStringExtra(Others.EXTRA_DATA))){
ClassEntity new_group=new ClassEntity();
new_group.id_of_a_group= intent.getStringExtra(Others.EXTRA_DATA);
new_group.monday=mon2Fragment.Text_getter();
db.classDao().insert(new_group);
}
if(!db.classDao().doesGroupExist(intent.getStringExtra(Others.EXTRA_DATA))){
db.classDao().update(mon2Fragment.Text_getter(),intent.getStringExtra(Others.EXTRA_DATA));
}
return null;
}
}
public String[] Text_getter() {
String[] arr={(String) textView1.getText(),(String) textView2.getText(),
(String) textView3.getText(),(String) textView4.getText(),
(String) textView5.getText(),(String) textView6.getText(),
(String) textView7.getText(),(String) textView8.getText()
};
return arr;
}
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> fragmentList=new ArrayList<>();
private final List<String> FragmentListTitles=new ArrayList<>();
public ViewPagerAdapter(FragmentManager fm,int behavior) {
super(fm,behavior);
}
@NonNull
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return FragmentListTitles.size();
}
@Override
public CharSequence getPageTitle(int position) {
return FragmentListTitles.get(position);
}
public void AddFragment(Fragment fragment,String Title){
fragmentList.add(fragment);
FragmentListTitles.add(Title);
}
}
Не знаю, понадобится ли вам ViewPager, но на всякий случай) И я был бы чрезвычайно признателен, если бы вы могли дать хорошее объяснение в дополнение. Заранее спасибо