У меня проблемы с созданием объектов класса в 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");
}
}
Вы создали объекты как поля в порядке.
Однако вы не можете вызывать методы экземпляра вне каких-либо других методов, поэтому вам нужно использовать устройство прерывания внутри onCreate или как часть события нажатия кнопки, например.
FWIW, не используйте методы журнала Android как часть классов POJO
Пытаться
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();
}
}
Создание экземпляра правильное, но вы можете получить доступ к методам объекта только внутри методов, а не на уровне класса.
Вы можете получить к нему доступ внутри метода onCreate, как показано Махараджей или другим методом.
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();
}
}
вы должны вызвать свой `myFan.breakDevice(); myLight.breakDevice();` в каком-то методе, как вы это делаете в
onCreate()
;