В настоящее время у меня есть родительский класс, который имеет два подкласса и что я, по сути, хочу сделать, это наследование их общей переменной (float). Мне нужно установить значение float в подклассе1, а затем использовать значение float в подклассе2. Я должен добавить, что это все действия Android и что подкласс1 находится в начале цепочки действий, а подкласс2 находится в конце этой цепочки, все действия между ними также являются дочерними элементами одного и того же родительского класса.Общие переменные в подклассах в java
То, что я в настоящее время есть что-то похожее на следующее: (я оставил много другого кода из это только голые кости)
class activityParent extends Activity{
public static float value;
public void setValue(){
//grab the value from phone (ill leave this code out and will hardcode a value below as an example)
value = 0.6f;
}
public void useValue(){
//where i use the value in another function here
otherFuncion(value);
}
}
class subclass1 extends activityParent
{
@Override
public void onCreate(Bundle bundle){
setValue();//need this to be initialized first
super.onCreate(bundle);
}
}
class subclass2 extends activityParent{
//some previous code here
//i need to use the value just before the activity finishes
useValue();
finish();
}
Это всплывают значение никогда не используется нигде ,
Этот подход кажется неправильным, и я это знаю, но я не уверен, как это осуществить.
Я думал о передаче данных с намерениями, но, как уже упоминалось, два подкласса arent в прямом контакте друг с другом, theres ряд действий между ними, и я бы предпочел не передавать эти данные через них все, чтобы достичь конец.
Я знаю, что это, вероятно, не очень хорошая практика, но вы можете записать значение в файл и прочитать его в другом действии. – iWumbo
Я не вижу проблемы подхода. У вас есть статическая переменная, и вы можете получить доступ к ней из любого места и в любое время без перехода к какой-либо деятельности. Или, может быть, ваш вопрос недостаточно ясен! –
Согласен с @NguyenDoanTung. Если вы считаете, что зло имеет статические поля, я бы предложил использовать один контейнер данных класса Singleton или использовать SharedPreferences (простейшее постоянное хранилище в Android) для хранения и получения значения. –