Создание объектов в Android

#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();
    }
}