#java #android
#java #Android
Вопрос:
У меня возникли проблемы с созданием объектов класса в Android Studio. Я создал несколько классов под названием Fan, Light и Device.
Когда я пытаюсь создать экземпляр Fan и Light в MainActivity.java Я получаю эти ошибки:
-
Поле ‘myFan’ никогда не используется
-
Не удается разрешить символ ‘breakDevice’
Код показан ниже. Я был бы признателен за любое решение этой проблемы. Спасибо
MainActivity.java
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public Light myLight = new Light();
Fan myFan = new Fan();
myFan.breakDevice();
myLight.breakDevice();
}
Fan.java
package com.example.codealong3;
import android.util.Log;
public class Fan extends Device{
public Fan() {
setDeviceName("FAN");
}
@Override
public void breakDevice() {
Log.e(getDeviceName(), "BANG ! It's broken");
}
}
Light.java
package com.example.codealong3;
import android.util.Log;
public class Light extends Device {
public Light() {
setDeviceName("LIGHT");
}
@Override
public void breakDevice() {
Log.e(getDeviceName(), "Glass Everywhere! .. I guess that's not bad");
}
}
Комментарии:
1. вы должны вызвать свой ` myFan.breakDevice(); myLight.breakDevice();` каким-либо методом, подобным тому, который вы делаете в
onCreate()
;
Ответ №1:
Попробуйте
MainActivity.java
public class MainActivity extends Activity
{
public Light myLight = new Light();
Fan myFan = new Fan();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myFan.breakDevice();
myLight.breakDevice();
}
}
Ответ №2:
Вы создали объекты в виде полей нормально.
Однако вы не можете вызывать методы экземпляра вне любых других методов, поэтому вам придется использовать break device в onCreate или, например, как часть события нажатия кнопки
Комментарии:
1. Черт возьми, не используйте методы Android log как часть классов POJO
Ответ №3:
Создание экземпляра выполнено правильно, но вы можете получить доступ к методам объекта только внутри методов, а не на уровне класса.
Вы можете получить к нему доступ внутри метода onCreate, выбранного Maharaja или другим методом.
public class MainActivity extends Activity
{
//Instantiate object on global or class level
public Light myLight = new Light();
Fan myFan = new Fan();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
executeObjectCommands();
}
//You can execute your commands inside this method
//You can also separate them in different methods and return something if needed
public void executeObjectCommands()
{
myFan.breakDevice();
myLight.breakDevice();
}
}