Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
62 / 48 / 20
Регистрация: 01.09.2017
Сообщений: 381

Как вызвать метод из другого класса java в Android Studio?

18.05.2022, 10:15. Показов 1974. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Никак не могу понять почему при попытке вызвать функцию или метод из другого класса приложение просто тупо вылетает. Применял разные варианты слушателей, всё равно не робит. Если функция или метод расположены в MainActivity.java то все нормально работает, а в другом классе даже в созданном новом активити вызывает сбой приложения и вылет.
Всё методы вызовов функций из MainActivity.java я прекрасно знаю, вопрос в другом, как их вызвать из другого класса? Всё делаю так же, но приложение вылетает и всё тут.
работаю с API Level 29 в Android Studio. Не пойму в чём тут дело. Дайте пожалуйста пример реализации.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.05.2022, 10:15
Ответы с готовыми решениями:

Как вызвать определенный метод переданного класса через метод другого класса?
Добрый день. Захотел я вызвать в методе класса метод некоего другого класса, о котором я пока не знаю. Мне пришла в голову...

Как вызвать метод из другого класса
Есть класс Player, в нем есть метод "Shoot", как из него вызвать метод BCheck из класса "HUDController"? Просто мне нужно обновить...

Как вызвать метод из другого класса?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace...

5
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
18.05.2022, 10:32
У любого вылета есть лог, где всё написано.
0
93 / 66 / 27
Регистрация: 23.06.2019
Сообщений: 477
18.05.2022, 11:07
Цитата Сообщение от 920403 Посмотреть сообщение
в другом классе даже в созданном новом активити вызывает сбой приложения и вылет.
Интересно посмотреть исходники, что бы понять, что такое созданное новое активити в Вашей ситуации и откуда вызываются в ней функции.

Вообще-то для прикладного программиста функции (или методы, как правильно?) активити вызываются либо в самой активити, либо из расположенных в ней вьюхах или фрагментах. И даже в этом случае надо следить за ее жизненным циклом.
0
62 / 48 / 20
Регистрация: 01.09.2017
Сообщений: 381
18.05.2022, 16:32  [ТС]
Прошу строго не судить, я ещё только осваиваю это.

Ну допустим есть activity_main.xml

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
   
 
    <Button
        android:id="@+id/id_button"
        android:layout_width="398dp"
        android:layout_height="56dp"
        android:text="Button"
        android:onClick="MyFun"                     вот здесь я пытался менять на MyFun2  из нового класса.
        tools:layout_editor_absoluteX="9dp"
        tools:layout_editor_absoluteY="171dp"
        tools:ignore="MissingConstraints" />
 
</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.example.myapplication;
 
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
 
 
public class MainActivity extends AppCompatActivity  {
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
 
 
    public void MyFun(View view) {
        Toast.makeText(this, "MyText1", Toast.LENGTH_SHORT).show();
    }
}
Тут проблем нет, всё нормально работает.

Но если создать новый класс MyClass.java c такой же функцией, и попытаться вызвать её через onClick в разметке activity_main.xml , то приложение при нажатии на кнопку вылетает. Может тут дело совсем малое, вероятно я ещё не изучил но прошу подсказать.


Второй класс клон

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.example.myapplication;
 
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
 
public class MyClass extends AppCompatActivity {
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
 
 
        public void MyFun2(View view){
 
            Toast.makeText(this, "MyText2", Toast.LENGTH_SHORT).show();
        }
    }
0
93 / 66 / 27
Регистрация: 23.06.2019
Сообщений: 477
18.05.2022, 16:58
Цитата Сообщение от 920403 Посмотреть сообщение
Но если создать новый класс MyClass.java c такой же функцией, и попытаться вызвать её через onClick в разметке activity_main.xml , то приложение при нажатии на кнопку вылетает. Может тут дело совсем малое, вероятно я ещё не изучил но прошу подсказать.
Это не малое. Это сновы.
Класс - это просто схема для создания объекта.
Создает объекты из класса операционная система,
когда прикладной программист пишет что-то типа new QweAsd.class().
В андроиде Активити создаются из классов через интенты.
Когда стартует приложение или когда выполняется startActivity(intent).
И ссылки на созданный объект из класса активити у прикикладного программиста нет.
Поэтому нельзя вызвать методы из одной активити у другой.

Нельзя вызывать методы просто так из класса.
Сначала из класса создается объект. И тогда по ссылке на объект вызывается метод.
Из одной активити прикладной программист не может никак получить ссылку на объект другой активити.

Если только-то сумеет сделать Активити статической. То есть скомпиленной сразу при компиляции в объект. Не знаю, так вообще возможно сделать или нет.Но в любом случае так не делается.

Проще описать чего хочется получить вызывая из одной активити методы другой активити.
И сделать это другим способом.
1
62 / 48 / 20
Регистрация: 01.09.2017
Сообщений: 381
18.05.2022, 17:31  [ТС]
Благодарю вас. Теперь понятно! Спасибо за разъяснение!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.05.2022, 17:31
Помогаю со студенческими работами здесь

Android Studio, как вызвать данный метод ?
public void showAlert1(Context context){ first = new String; first = firstNumberOfFirstTeam.toArray(first); ...

Как верно вызвать метод другого класса?
Есть код на Java, не понимаю как верно его реализовать на Python, интересует только реализация вызова метода класса А из объекта класса b: ...

Как вызвать метод из другого класса в kv файле?
Здравствуйте! Знаю как &quot;привязать&quot; один класс к другому и, следовательно методы &quot;привязываемого&quot; класса в .py. Знаю как...

Как вызвать в Main метод из другого класса?
Задачка на среднее арифметическое. Создал класс &quot;Array&quot;, в котором происходит заполнение массива числами, затем числа из массива и...

Как для события Button_Click вызвать метод из другого класса ?
Добрый вечер, уважаемые форумчане ! Разбираюсь с делегатами и событиями. Хочу вызвать метод из стороннего класса для события...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru