Форум программистов, компьютерный форум CyberForum.ru

Использование одного метода в двух активити - Android

Восстановить пароль Регистрация
 
 
charset
 Аватар для charset
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 12
08.11.2016, 01:09     Использование одного метода в двух активити #1
Добрый день. Подскажите такой вопрос: как можно использовать один метод для двух разных активити (android studio). Т.е. если я его опишу в паблик активити Main, как мне его подключить к активити second? Что-то перерыл весь интернет, а не могу найти ответ на этот вопрос.

Заранее спасибо.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OlegJV
 Аватар для OlegJV
98 / 98 / 29
Регистрация: 13.03.2016
Сообщений: 448
08.11.2016, 02:27     Использование одного метода в двух активити #2
Сделать метод в отдельном классе и вызывать его хоть из 20 активити
charset
 Аватар для charset
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 12
08.11.2016, 09:03  [ТС]     Использование одного метода в двух активити #3
пробовал, но не получается.

Я вызываю его из другого активити так: МайнАктивити.МайМетод(); но так не работает, пишет что не знает что такое МайнАктивити. Если просто МайМетод() - так же не знает.
vxg
Модератор
 Аватар для vxg
2669 / 1680 / 158
Регистрация: 13.01.2012
Сообщений: 6,284
08.11.2016, 10:17     Использование одного метода в двух активити #4
charset, если метод не статический то вы не можете вызывать его через класс.метод()
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
08.11.2016, 10:39     Использование одного метода в двух активити #5
Пишешь свой класс, там этот метод, потом в активити своих пишешь
Java
1
2
MyClass class=new MyClass(..); 
class.MyMethod(..);
Это написано в любой книжке по ооп, ещё можно статиком объявить, но это не очень.
charset
 Аватар для charset
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 12
08.11.2016, 15:32  [ТС]     Использование одного метода в двух активити #6
vxg, да, метод не статический

Добавлено через 46 секунд
ExFau$t, сейчас попробую.

Добавлено через 3 минуты
видимо что-то не то делаю. Что-то не получается. Но буду сейчас рыть в данном направлении.
Паблито
не спать!
1803 / 1537 / 478
Регистрация: 12.05.2014
Сообщений: 5,596
Завершенные тесты: 1
08.11.2016, 15:35     Использование одного метода в двух активити #7
Цитата Сообщение от charset Посмотреть сообщение
как можно использовать один метод для двух разных активити (android studio)
зачем и что на самом деле надо сделать?
Цитата Сообщение от charset Посмотреть сообщение
видимо что-то не то делаю
да, причем очень даже
charset
 Аватар для charset
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 12
08.11.2016, 15:42  [ТС]     Использование одного метода в двух активити #8
я создал методы в классе:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 
    Button b_record;
    Button b_add_words;
    SharedPreferences sPref;
    final String SAVED_TEXT = "saved_text";
    
   .....
 
    public int SaveParam(String name, String value){
        sPref = getSharedPreferences(name, MODE_PRIVATE);
        SharedPreferences.Editor ed = sPref.edit();
        ed.putString(SAVED_TEXT, String.valueOf(value));
        ed.apply();
        return 1;
    }
}
Может уже на этом этапе я что-то не то сделал?

Далее мне нужно вызвать метод SaveParam(String name, String value) из другого активити. Я делаю так:
Java
1
MainActivity class=new MainActivity; // но тут Gradle уже ругается.
Паблито
не спать!
1803 / 1537 / 478
Регистрация: 12.05.2014
Сообщений: 5,596
Завершенные тесты: 1
08.11.2016, 15:56     Использование одного метода в двух активити #9
Цитата Сообщение от charset Посмотреть сообщение
Далее мне нужно вызвать метод SaveParam(String name, String value) из другого активити.
зачем?
значит этот метод находится не на своем месте
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
08.11.2016, 15:58     Использование одного метода в двух активити #10
Ты создал не класс, а AppCompatActivity. А да, ещё конструктор в классе должен быть.
vindigo
18 / 18 / 3
Регистрация: 15.05.2014
Сообщений: 77
08.11.2016, 16:06     Использование одного метода в двух активити #11
Да дайте ему вот это почитать...
charset
 Аватар для charset
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 12
08.11.2016, 16:26  [ТС]     Использование одного метода в двух активити #12
спасибо, буду читать.
charset
 Аватар для charset
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 12
10.11.2016, 13:28  [ТС]     Использование одного метода в двух активити #13
в общем посмотрел статью, я так и делал. Разница в том что метод я сделал публичным, при этом он не был виден в экземпляре. Сделал его protected, теперь вижу (хотя по мне так как-то не логично), могу вызывать. Но теперь при вызове метода gridle выдает ошибку:

Error37, 59) error: <identifier> expected
Паблито
не спать!
1803 / 1537 / 478
Регистрация: 12.05.2014
Сообщений: 5,596
Завершенные тесты: 1
10.11.2016, 13:31     Использование одного метода в двух активити #14
код будет или гадать?
charset
 Аватар для charset
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 12
10.11.2016, 16:36  [ТС]     Использование одного метода в двух активити #15
Все. Вопрос решился. Экземпляр класса создавал за пределами другого метода, по этой причине андроидстудио не ругалось на его использовании, ну а при компиляции выдавалась ошибка. Создал экземпляр непосредственно перед вызовом метода данного класса - все работает.

Моя ошибка была в том что метод в классе нужно было сделать protected, и область видимости экземпляра не распространялась на другой метод где я его вызывал.

Спасибо всем кто откликнулся.

Добавлено через 2 часа 59 минут
ах, да

это укороченный вариант
Java
1
2
3
4
5
6
7
8
9
class MainLib extends MainActivity{
    SharedPreferences sPref;
    final String SAVED_TEXT = "saved_text";
 
    protected String LoadParam_pub_fsf(String name){
        sPref = getSharedPreferences(name, MODE_PRIVATE);
        return sPref.getString(SAVED_TEXT, "");
    }
}
ну и вызов из другого активити
Java
1
2
3
4
public void onClick(View v) {
                MainLib main = new MainLib();
                Log.d(TAG, "ssss-main: "+main.LoadParam_pub_fsf("MainDir"));
            }
Паблито
не спать!
1803 / 1537 / 478
Регистрация: 12.05.2014
Сообщений: 5,596
Завершенные тесты: 1
10.11.2016, 16:48     Использование одного метода в двух активити #16
а просто перенести этот метод целиком во вторую активити и вызывать там, не?
без создания экземпляра активити
charset
 Аватар для charset
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 12
10.11.2016, 17:27  [ТС]     Использование одного метода в двух активити #17
перенести? В смысле скопировать код?

Добавлено через 55 секунд
мне нужно использовать данный метод на нескольких активити

Добавлено через 31 минуту
теперь другая проблема. В общем я вернулся к тому с чего изначально и начинал. В методе у меня используется бибилиотека
Java
1
android.content.SharedPreferences;
подключить у меня только получается если в классе
Java
1
extends MainActivity
. Но при вызове из другого активити у меня активити закрывается (не могу найти ошибку по какой закрывается). Либо не закрывается, а вместо него открывается активити где прописан этот класс, т.е. главный активити. Если создать класс без
Java
1
extends MainActivity
- не могу подключить
Java
1
android.content.SharedPreferences;
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
10.11.2016, 19:39     Использование одного метода в двух активити #18
ответ в сообщении №5,10 и 11
charset
 Аватар для charset
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 12
10.11.2016, 21:47  [ТС]     Использование одного метода в двух активити #19
Но в таком случае у меня не получается использовать:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
import android.content.SharedPreferences;
 
....
 
class MainLib extends MainActivity{
    SharedPreferences sPref;
    final String SAVED_TEXT = "saved_text";
 
    protected String LoadParam_pub_fsf(String name){
        sPref = getSharedPreferences(name, MODE_PRIVATE);
        return sPref.getString(SAVED_TEXT, "");
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2016, 21:52     Использование одного метода в двух активити
Еще ссылки по теме:

Код для двух кнопок в одном активити Android
Android Как правильно организовать переход с одного активити на другое с паролем
На телефоне highscreen 3 на всех активити происходит быстрый самовозврат к главной активити Android

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

Или воспользуйтесь поиском по форуму:
OlegJV
 Аватар для OlegJV
98 / 98 / 29
Регистрация: 13.03.2016
Сообщений: 448
10.11.2016, 21:52     Использование одного метода в двух активити #20
Уже 100500 раз посоветовали делать метод в отдельном классе, но ТС упорно сует его в активити. Видимо, дело принципа

Добавлено через 1 минуту
Цитата Сообщение от charset Посмотреть сообщение
extends MainActivity
Вот это вот зачем?

Добавлено через 2 минуты
И где конструктор класса? Там можно было бы контекст передать, если религия позволяет. А из контекста и в SharedPreferences пробраться...
Yandex
Объявления
10.11.2016, 21:52     Использование одного метода в двух активити
Ответ Создать тему
Опции темы

Текущее время: 18:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru