#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. что это за новая ошибка?