Как изменить сохраненные данные внутри ViewPager? (в настоящее время ошибка нулевого объекта, но не при просмотре сохраненных данных) - PullRequest
0 голосов
/ 06 сентября 2018

Введение

Привет, ребята, я работаю над приложением в форме вопроса и долгое время застреваю на той же ошибке. Я уже проверил много вопросов StackOverFlow по этой теме, но не смог найти решения, применимого к моей проблеме.

Задача

После добавления формы появятся 6 слайдов в окне просмотра, каждый из которых содержит один вопрос (EditText). После заполнения вопросов элементы сохраняются. Если затем я открою форму, я смогу просмотреть все свои сохраненные данные, которые я поместил в эти EditTexts. К сожалению, попытка изменить их приводит к ошибке ссылки на нулевой объект в getText внутри моего String getTitle из моих фрагментов (за исключением Frag1 и Frag2).

Вопрос

Понятия не имею, что идет не так, сохранение не проблема, просмотр сохраненных данных не проблема. Но изменение любого другого фрагмента, кроме Frag1 или Frag2, приводит к ошибке нулевого объекта относительно String getTitle ... Надеюсь, кто-то знает, что идет не так. Может быть, это как-то связано с тем, что сохраненные данные не преобразуются в новые и т. Д.?

Коды

public class Frag4 extends Fragment {
private static final String EXTRA_TEXT = "text";
private EditText mEtVraag4;

public static Frag4 newInstance(String message) {
    Bundle args = new Bundle();
    args.putString(EXTRA_TEXT, message);
    Frag4 fragment = new Frag4();
    fragment.setArguments(args);
    return fragment;
}
public Frag4 () {

}

public String getTitle(){
    return mEtVraag4.getText().toString();
}

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.frag4_layout, container, false);
    mEtVraag4 = (EditText) view.findViewById(R.id.note_et_title4);
    Bundle bundle = getArguments();
    if (bundle != null) {
        mEtVraag4.setText(bundle.getString(EXTRA_TEXT));
    }
    return view;
}

1024 *
*

Соответствующие части в моей деятельности

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    myDialog1 = new Dialog(this);

    String mtitle = "";
    String mquestion2 = "";

    String mquestion4 = "";
    String mquestion5 = "";
    String mquestion6 = "";
    String mquestion7 = "";

    mNoteFileName = getIntent().getStringExtra("NOTE_FILE");
    if(mNoteFileName !=null && !mNoteFileName.isEmpty()) {
        mLoadedNote = Utilities.getNoteByName(this, mNoteFileName);
        if(mLoadedNote !=null) {
            mtitle = mLoadedNote.getTitle();
            mquestion2 = mLoadedNote.getVraag2();

            mquestion4 = mLoadedNote.getVraag4();
            mquestion5 = mLoadedNote.getVraag5();
            mquestion6 = mLoadedNote.getVraag6();
            mquestion7 = mLoadedNote.getVraag7();

        }
    }

    List<Fragment> fragments = new ArrayList<>();
    fragments.add(Frag1.newInstance(mtitle));
    fragments.add(Frag2.newInstance(mquestion2));

    fragments.add(Frag4.newInstance(mquestion4));
    fragments.add(Frag5.newInstance(mquestion5));
    fragments.add(Frag6.newInstance(mquestion6));
    fragments.add(Frag7.newInstance(mquestion7));

    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager(),fragments);

    mViewPager = (ViewPager) findViewById(R.id.container);

    mViewPager.setAdapter(mSectionsPagerAdapter);

}


 private void saveNote() {

    String title1="",title2="", title4="",title5="",title6="", title7="";
    for(int position = 0; position<mSectionsPagerAdapter.getCount();position++){
        Fragment fragment = mSectionsPagerAdapter.getItem(position);
        if(fragment instanceof Frag1){
            title1 = ((Frag1)fragment).getTitle();
        } else  if(fragment instanceof Frag2){
            title2 = ((Frag2)fragment).getTitle();

        } else  if(fragment instanceof Frag4){
            title4 = ((Frag4)fragment).getTitle();
        } else  if(fragment instanceof Frag5){
            title5 = ((Frag5)fragment).getTitle();
        } else  if(fragment instanceof Frag6){
            title6 = ((Frag6)fragment).getTitle();
        } else  if(fragment instanceof Frag7){
            title7 = ((Frag7)fragment).getTitle();
        }
    }

    boolean valid = !TextUtils.isEmpty(title1);


    Ideas note;

    if(!valid){
        Toast.makeText(this, "Please provide inputs", Toast.LENGTH_SHORT).show();
        return;
    }
    note = new Ideas((mLoadedNote != null)?mLoadedNote.getDateTime():System.currentTimeMillis(), title1, title2, title4, title5, title6, title7);

    if (Utilities.saveNote(this, note)){
        Toast.makeText(this, "saved", Toast.LENGTH_SHORT).show();
    } else{
        Toast.makeText(this, "not enough space", Toast.LENGTH_SHORT).show();
    }

    finish();
}
...