Как отправить данные в edittext в viewpager в sharedpreference при нажатии кнопки

#android

#Android

Вопрос:

у меня есть viewpager, который состоит из трех XML-файлов, но последний XML-файл содержит EditText и кнопку.Теперь я хочу, чтобы все, что пользователь вводит в EditText, сохранялось в общих настройках при нажатии кнопки: это мои классы

 public class CustomPagerAdapter extends PagerAdapter {

private   Context context;

public CustomPagerAdapter(Context context) {
    this.context = context;
}
@Override
public Object instantiateItem(ViewGroup collection, int position) {


    ModelObject mo = ModelObject.values()[position];
    LayoutInflater inflater = LayoutInflater.from(context);
    ViewGroup layout = (ViewGroup) inflater.inflate(mo.getLayoutResId(), collection, false);

   Button butIntro = (Button) layout.findViewById(R.id.introStart);
   EditText= (EditText) layout.findViewById(R.id.introUsername);


    butIntro.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
    SharedPreferences sharepreff = getSharedPreferences("StartUpInfo", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharepreff.edit();
    editor.putString("username",introUser.getText().toString());
    editor.apply();
        }
    });
    collection.addView(layout);
    return layout;
}


@Override
public void destroyItem(ViewGroup collection, int position, Object view) {
    collection.removeView((View) view);
}
@Override
public int getCount() {
    return ModelObject.values().length;
}

@Override
public boolean isViewFromObject(View view, Object object) {
    return view == object;
}

@Override
public CharSequence getPageTitle(int position) {
    ModelObject customPagerEnum = ModelObject.values()[position];
    return context.getString(customPagerEnum.getTitleResId());
}
  

}

 public class intro extends AppCompatActivity {
EditText introUser;
TextView username;

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

    SharedPreferences pref = getSharedPreferences("ActivityPREF", Context.MODE_PRIVATE);
    if(pref.getBoolean("activity_executed", false)){
        Intent intent = new Intent(this, homeActivity.class);
        startActivity(intent);
        finish();
    } else {
        SharedPreferences.Editor ed = pref.edit();
        ed.putBoolean("activity_executed", true);
        ed.commit();
    }

    ViewPager intro =(ViewPager) findViewById(R.id.introviewpager);
    intro.setAdapter(new CustomPagerAdapter(this));
     introUser= (EditText) findViewById(R.id.introUsername);

}

   public void newStart(View view){

       Intent intent1 = new Intent(this, homeActivity.class);
      this.startActivity(intent1);
  }
  }
  

Приложение вылетает при каждом запуске.Пожалуйста, кто-нибудь может помочь мне понять, что я здесь делаю не так.Спасибо

Комментарии:

1. Не могли бы вы, пожалуйста, добавить свой код ошибки? Более того: ваш sdk должен предупредить вас, что в этой строке «SharedPreferences sharepreff = getSharedPreferences(«StartUpInfo», Context.MODE_PRIVATE)»; в адаптере SharedPreferences неизвестно. Sharedpreferences недоступны классу. Вы должны вызвать его через контекст: context.getSharedPreferences() Дополнительно: классы всегда начинаются с заглавной буквы «Intro»

2. ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: основной com.example.michael79.phca E / AndroidRuntime: Процесс: com.example.michael79.phca, PID: 1941 com.example.michael79.phca E/AndroidRuntime: java.lang. Исключение NullPointerException: попытка вызвать виртуальный метод ‘void android.widget. Button.setOnClickListener(android.view.view$OnClickListener)’ в нулевой ссылке на объект com.example.michael79.phca E/AndroidRuntime: в com.example.michael79.phca.CustomPagerAdapter.instantiateItem(CustomPagerAdapter.java:35) com.example.michael79.phca E/ Время работы Android: вandroid.support.v4.view. ViewPager.addNewItem(ViewPager.java: 870)

3. ваша кнопка не была инициализирована. Проверьте правильность ссылки xml

4. да, это так .. я даже изменил его сейчас, но он все еще сбой

5. что это за новая ошибка?