Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
charset
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 12
1

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

08.11.2016, 01:09. Просмотров 1009. Ответов 26
Метки нет (Все метки)

Добрый день. Подскажите такой вопрос: как можно использовать один метод для двух разных активити (android studio). Т.е. если я его опишу в паблик активити Main, как мне его подключить к активити second? Что-то перерыл весь интернет, а не могу найти ответ на этот вопрос.

Заранее спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2016, 01:09
Ответы с готовыми решениями:

Передача с одного активити в другое
Помогите!!!Есть два активити в первом я ввожу данные в editText как мне сделать...

Как убрать Actionbar из одного активити
Всем привет! Как убрать Actionbar из одного активити? Так, чтобы только в 1...

Возможно ли создание одного активити в другом?
К примеру у меня есть приложение с меню из кнопок слева, и linearLayout справа....

Три активити установились отдельными приложениями вместо одного
Как я понял - Activity - это окно программы. Вот создал 3 окна программы, все...

Как из одного активити строку передать в другую в виде listView
это первое активитиpublic class TodoActivity extends Activity implements...

26
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
08.11.2016, 02:27 2
Сделать метод в отдельном классе и вызывать его хоть из 20 активити
0
charset
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 12
08.11.2016, 09:03  [ТС] 3
пробовал, но не получается.

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

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

Добавлено через 3 минуты
видимо что-то не то делаю. Что-то не получается. Но буду сейчас рыть в данном направлении.
0
Pablito
2722 / 2165 / 735
Регистрация: 12.05.2014
Сообщений: 7,572
Завершенные тесты: 1
08.11.2016, 15:35 7
Цитата Сообщение от charset Посмотреть сообщение
как можно использовать один метод для двух разных активити (android studio)
зачем и что на самом деле надо сделать?
Цитата Сообщение от charset Посмотреть сообщение
видимо что-то не то делаю
да, причем очень даже
0
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 уже ругается.
0
Pablito
2722 / 2165 / 735
Регистрация: 12.05.2014
Сообщений: 7,572
Завершенные тесты: 1
08.11.2016, 15:56 9
Цитата Сообщение от charset Посмотреть сообщение
Далее мне нужно вызвать метод SaveParam(String name, String value) из другого активити.
зачем?
значит этот метод находится не на своем месте
0
ExFau$t
565 / 510 / 114
Регистрация: 08.05.2012
Сообщений: 2,539
08.11.2016, 15:58 10
Ты создал не класс, а AppCompatActivity. А да, ещё конструктор в классе должен быть.
0
vindigo
20 / 20 / 3
Регистрация: 15.05.2014
Сообщений: 80
08.11.2016, 16:06 11
Да дайте ему вот это почитать...
0
charset
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 12
08.11.2016, 16:26  [ТС] 12
спасибо, буду читать.
0
charset
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 12
10.11.2016, 13:28  [ТС] 13
в общем посмотрел статью, я так и делал. Разница в том что метод я сделал публичным, при этом он не был виден в экземпляре. Сделал его protected, теперь вижу (хотя по мне так как-то не логично), могу вызывать. Но теперь при вызове метода gridle выдает ошибку:

Error37, 59) error: <identifier> expected
0
Pablito
2722 / 2165 / 735
Регистрация: 12.05.2014
Сообщений: 7,572
Завершенные тесты: 1
10.11.2016, 13:31 14
код будет или гадать?
0
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"));
            }
0
Pablito
2722 / 2165 / 735
Регистрация: 12.05.2014
Сообщений: 7,572
Завершенные тесты: 1
10.11.2016, 16:48 16
а просто перенести этот метод целиком во вторую активити и вызывать там, не?
без создания экземпляра активити
0
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;
0
ExFau$t
565 / 510 / 114
Регистрация: 08.05.2012
Сообщений: 2,539
10.11.2016, 19:39 18
ответ в сообщении №5,10 и 11
0
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, "");
    }
}
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
10.11.2016, 21:52 20
Уже 100500 раз посоветовали делать метод в отдельном классе, но ТС упорно сует его в активити. Видимо, дело принципа

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

Добавлено через 2 минуты
И где конструктор класса? Там можно было бы контекст передать, если религия позволяет. А из контекста и в SharedPreferences пробраться...
0
10.11.2016, 21:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2016, 21:52

Как правильно организовать переход с одного активити на другое с паролем
Как правильно организовать переход с одного активити на другое с паролем (на...

Код для двух кнопок в одном активити
Здравствуйте, я создал кнопку(в активити1), при нажатии на которую происходит...

На телефоне highscreen 3 на всех активити происходит быстрый самовозврат к главной активити
Сделал меню в виде ListView. При клике на меню запускаются активити. На...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru