Как использовать функцию Activity в другом классе

Я пытаюсь использовать findViewById, чтобы иметь возможность определить представление и макет в моем классе. Как было предложено в Интернете, я создал контекст активности, но он по-прежнему возвращает объект как null. Я все еще новичок в кодировании, поэтому, пожалуйста, потерпите меня.

Вот мой класс:

public class team{
    //defining activity class to use
    Activity activity;
    Context context;

    //definging text box
    LinearLayout lay = activity.findViewById(R.id.Scontainer);
    View Tbox = activity.getLayoutInflater().inflate(R.layout.text_box_output, null);

    //mebers Deffing
    String teamname;
    String teacher;
    ArrayList<Players> members = new ArrayList<Players>();

    public team(Context context, Activity activity, String teamname,String teacher) {
        //to be able to use activity
        this.context=context;
        this.activity=activity;

        //normal things to define
        this.teamname = teamname;
        this.teacher= teacher;
    }
//mainactivity

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sports_screen);

        Activity act= this;


        //creating the list that is on screen
        FloatingActionButton addClass = findViewById(R.id.Add_class_button);



        // input
        addClass.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                team sportsteam = new team(MainActivity.this,act,"","");
                sportsteam.addtext();
            }
        });
    }


}

`

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, проблема в том, что переменная активности в классе вашей команды не инициализирована, и поэтому activity.findViewById и activity.getLayoutInflater() возвращают значение null.

Чтобы решить эту проблему, вы можете передать экземпляр Activity классу команды в конструкторе, а затем использовать этот экземпляр для вызова findViewById и getLayoutInflater.

Вот обновленная версия вашего кода:

// My class
public class team {
    // Defining Activity class to use
    private Activity activity;

    // Defining text box
    LinearLayout lay;
    View Tbox;

    // Members Defining
    String teamname;
    String teacher;
    ArrayList<Players> members = new ArrayList<Players>();

    public team(Activity activity, String teamname, String teacher) {
        // To be able to use activity
        this.activity = activity;

        // Normal things to define
        this.teamname = teamname;
        this.teacher = teacher;
        
        // initialize the lay and Tbox variables
        lay = activity.findViewById(R.id.Scontainer);
        Tbox = activity.getLayoutInflater().inflate(R.layout.text_box_output, null);
    }

    public void addtext() {
        // add text to the layout and view
    }
}

// MainActivity
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sports_screen);

        // Creating the list that is on screen
        FloatingActionButton addClass = findViewById(R.id.Add_class_button);

        // Input
        addClass.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                team sportsteam = new team(MainActivity.this, "", "");
                sportsteam.addtext();
            }
        });
    }
}

Другие вопросы по теме