Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Zyf21
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 168
#1

Вызов метода в onCreate() - Программирование Android

09.01.2017, 00:39. Просмотров 386. Ответов 18
Метки нет (Все метки)

Здравствуйте.Пытаюсь загружать сохраненные данные при старте приложения и сохранять при выходе с помощью Preferences. Добавлял написанные для этого методы в onCreate и в onDestroy, но выбивало ошибку
Unable to start activity ComponentInfo{com.example.nawdriver2/com.example.nawdriver2.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
Вызывал эти методы через кнопки, и все работало. Заранее благодарю за помощь.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
 
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
 
 
            }
        });
 
 
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();
 
        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
 
 
        // Переход на уведомление
        fimport = new Fragmentone();
        fgallery = new Fragmentty();
        ftri=new Fragment_Tri();
 
        FragmentTransaction ftrans = getFragmentManager().beginTransaction();
        Intent intent = getIntent();
        int id = intent.getIntExtra("fragmentId", 0);
        if (id == 123) {
 
            ftrans.replace(R.id.container, fgallery);
 
        }
         else{
            ftrans.replace(R.id.container, fimport);
        }
        ftrans.commit();
 
        editTextt =(EditText)findViewById(R.id.editText4);
        loadText();
    }
Метод загрузки данных:
Java
1
2
3
4
5
6
7
8
 private void loadText() {
 
                 sPref =getPreferences(MODE_PRIVATE);
                 String saveText =sPref.getString(SAVED_TEXT,"");
                 editTextt.setText(saveText);
                 Toast.makeText(MainActivity.this, "TextLoaded", Toast.LENGTH_SHORT).show();
 
             }
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2017, 00:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вызов метода в onCreate() (Программирование Android):

Вызов метода из класса в таймере - Программирование Android
Не могу получить титул веб страницы в таймере (ошибка). Пример: public class Main_Web extends WebView { String texst =...

Вызов метода из другого Activity - Программирование Android
Здраствуйте. Помогите,пожалуйста, разобраться с несколькими вопросами: 1) Правильно ли, что "Настройки" я выделил в отдельный Activity ...

Вызов java метода из native - Программирование Android
Привет, чтот не пойму зачем у меня ошибка происходит... Значит что хочу и что происходит. Есть активити с TextView и кнопкой. В...

Вызов метода из другого класса - Программирование Android
Не могу разобраться, почему вылетает приложение, когда пытаюсь задать текст для TextView в MainActivity из другого класса. Подскажите...

Вызов нестатического метода из другого класса - Программирование Android
Здравствуйте. Подскажите, как можно вызвать нестатистический метод из другого класса. 1.Этот другой класс нельзя наследовать тем...

Вызов метода при прокрутке activity - Программирование Android
Как обработать событие когда activity прокрутили в самый низ что бы вызвать какой нибудь метод? Например как новости в ВК при прокрутке...

18
Kir-malishev
71 / 71 / 39
Регистрация: 07.08.2016
Сообщений: 173
09.01.2017, 01:45 #2
Насчёт ошибки, если честно, не знаю, но сохранять что-либо в onDestroy нельзя, так как вызов этого метода не гарантирован.
1
Zyf21
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 168
09.01.2017, 11:56  [ТС] #3
Kir-malishev, а где тогда вызывать метод, чтобы при выходе из приложения он запускался?
0
Pablito
2580 / 2061 / 643
Регистрация: 12.05.2014
Сообщений: 7,233
Завершенные тесты: 1
09.01.2017, 12:11 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
если R.id.editText4 то и искать его надо ВО ФРАГМЕНТЕ, а не в активити

сохраняют параметры обычно в onStop()
читают в onStart() или onCreate()
1
Zyf21
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 168
09.01.2017, 12:24  [ТС] #5
Паблито, получается нужно вызывать этот метод в фрагменте который загружается?
Java
1
2
editTextt =(EditText)findViewById(R.id.editText4);
        loadText();
0
Pablito
2580 / 2061 / 643
Регистрация: 12.05.2014
Сообщений: 7,233
Завершенные тесты: 1
09.01.2017, 12:27 #6
этот EditText находится в разметке активити или фрагмента?
1
Zyf21
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 168
09.01.2017, 12:28  [ТС] #7
Паблито, на фрагменте.
0
Pablito
2580 / 2061 / 643
Регистрация: 12.05.2014
Сообщений: 7,233
Завершенные тесты: 1
09.01.2017, 12:30 #8
значит его нужно вызывать с onCreateView() фрагмента
Java
1
editTextt =(EditText) view.findViewById(R.id.editText4);
1
Zyf21
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 168
09.01.2017, 12:48  [ТС] #9
Паблито, попробывал вызвать editText и loadText() в onStart и в onStop, то все работает без ошибок. А в onCreateView() фрагмента не получается вызвать.Подчеркивает красным view.findViewById и пишет Cannot resolve sombol.
0
Pablito
2580 / 2061 / 643
Регистрация: 12.05.2014
Сообщений: 7,233
Завершенные тесты: 1
09.01.2017, 12:50 #10
код?
1
Zyf21
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 168
09.01.2017, 12:54  [ТС] #11
Паблито,
Java
1
2
3
4
5
6
7
8
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_fragmentone, container, false);
       EditText editTextt =(EditText) view.findViewById(R.id.editText4);
 
    }
0
Pablito
2580 / 2061 / 643
Регистрация: 12.05.2014
Сообщений: 7,233
Завершенные тесты: 1
09.01.2017, 12:58 #12
программирование наугад?
1
Zyf21
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 168
09.01.2017, 13:00  [ТС] #13
Паблито, в смысле? Я понимаю что у меня очень низкий уровень навыков, но я пытаюсь чему-то учиться.
0
Pablito
2580 / 2061 / 643
Регистрация: 12.05.2014
Сообщений: 7,233
Завершенные тесты: 1
09.01.2017, 13:05 #14
ну просто ставить строку ниже return - это за гранью уже
Java
1
2
3
4
5
6
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_fragmentone, container, false);
    EditText editTextt =(EditText) view.findViewById(R.id.editText4);
    return view;
}
1
Zyf21
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 168
09.01.2017, 13:14  [ТС] #15
Паблито, ой блин,ну дурак я, стыдоба то какая, как я так написал... Спасибо. И еще вопрос, метод loadText() можно как-то вызвать в фрагменте из MainActivity, или его нужно полностью переписывать в самом фрагменте?
0
09.01.2017, 13:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2017, 13:14
Привет! Вот еще темы с ответами:

Вызов метода перед завершением работы приложения - Программирование Android
Вопрос такой, есть ли какой-нибудь метод, который можно перегрузить и который будет вызываться перед закрытием программы ? (например для...

Вызов метода при каждом открытии приложения - Программирование Android
Мне нужно, что бы при открытии приложения вызывался определенный метод. Если ставлю в onCreate, то вызов его происходит только если все...

NullPointer в OnCreate - Программирование Android
Наверное типичный вопрос, но вылетает ошибка в: Caused by: java.lang.NullPointerException ...

Перегрузка OnCreate - Программирование Android
Гуру ООП, помогите исправить "конфликт" Написал свой класс-предок для активити(MyActivity), где в onCreate добавил несколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru