Использование ресурсов классами

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
yacyna
Сообщения: 1
Зарегистрирован: 01 ноя 2015, 23:10

Использование ресурсов классами

Сообщение yacyna » 01 ноя 2015, 23:16

В приложении есть кнопка и TextView.
Пользователь жмёт клавишу.
После нажатия клавиши я хочу, чтобы создался объект другого класса CoffeeApp и вызвался метод CoffeeApp.run(), который записал бы в TextView строку, хранящуюся в strings.xml

Но при нажатии клавиши вылетает по ошибке java.lang.NullPointerException на строке, которая присваивает введённый текст в TextView.

В чём может быть проблема?

Код: Выделить всё

package com.example.robogiucetest_1;
  
public class MainActivity extends RoboActivity {
  
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        // Кнопка, которую будет жать пользователь
        Button myButton = (Button)findViewById(R.id.Mybutton); 
 
        // Ждём нажатия на кнопку
        myButton.setOnClickListener(new View.OnClickListener() { 
            @Override
            public void onClick(View w) {
 
             // Создаём второй класс, передавая в него строку
             CoffeeApp cApp = new CoffeeApp();  
 
             // Выполняем метод, который будет выводить строку
             cApp.run();  
            }
 
        });
    }
 
 
    class CoffeeApp
    {
        // Сюда хочу вывести строку, лежащую в strings.xml
        TextView heatStatus;   
        String string_heatStatus; 
 
        protected void onCreate(Bundle savedInstanceState) { 
 
            setContentView(R.layout.activity_main);   
 
            // Ссылка на текстовое поле, в кот. надо вывести строковый ресурс
            heatStatus = (TextView)findViewById(R.id.coffeeHeatingStatus);   
 
            // Получаю строку из strings.xml
            string_heatStatus = getString(R.string.heating_coffee_string); 
        }
 
        // Конструктор
        CoffeeApp()  {}   
        
        // Вызывается по нажатию кнопки через назначенный листенер в onCreate класса MainAcivity
        public void run()    
        {
            // Вот здесь возникает ошибка java.lang.NullPointerException
            heatStatus.setText(string_heatStatus); 
        }
    }
}

Ответить