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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 46, средняя оценка - 4.74
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
#1

Как запустить метод из другого класса? - Android

24.06.2013, 21:22. Просмотров 6095. Ответов 21
Метки нет (Все метки)

есть класс:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class Class1 extends DialogFragment implements OnClickListener {
 
    TextView textViewMessage;
 
    String name;
    String nameEvent;
 
    Class2 class2;
 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
 
        class2 = new Class2();
 
        View v = inflater.inflate(R.layout.class, null);
        v.findViewById(R.id.button1).setOnClickListener(this);
        v.findViewById(R.id.button2).setOnClickListener(this);
 
        return v;
    }
 
    public void onClick(View v) {
 
        switch (v.getId()) {
        case R.id.button1:
            dismiss();
            break;
        case R.id.button2:
 
            class2.stActivity();
 
            break;
        }
 
    }
 
    public void onDismiss(DialogInterface dialog) {
        super.onDismiss(dialog);
    }
 
    public void onCancel(DialogInterface dialog) {
        super.onCancel(dialog);
    }
 
}
из него я так: class2.startLoginActivity(); вызываю метод из другого класса. Вот класс который содержит вызывающий метод:

Java
1
2
3
4
5
6
7
8
9
10
public class Class2 extends Activity {
 
    private static final int REQUEST_LOGIN = 1;
 
                public void stActivity() {
        Intent intent = new Intent();
        intent.setClass(this, myActivity.class);
        startActivityForResult(intent, REQUEST_LOGIN);
    }
}
Но выскакивает nullPointExeption. Я так понимаю проблемы с контекстом, помогите примером или поправьте выложенный код, уже не знаю как правильно здесь всё сделать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
24.06.2013, 21:34     Как запустить метод из другого класса? #2
Например
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
 
public class ConnectionDetector {
 
    private Context _context;
 
    public ConnectionDetector(Context context){
        this._context = context;
    }
 
    public boolean isConnectingToInternet(){
        ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
          if (connectivity != null)
          {
              NetworkInfo[] info = connectivity.getAllNetworkInfo();
              if (info != null)
                  for (int i = 0; i < info.length; i++)
                      if (info[i].getState() == NetworkInfo.State.CONNECTED)
                      {
                          return true;
                      }
 
          }
          return false;
    }
}
Использование
Java
1
2
3
4
ConnectionDetector cd;
 
cd = new ConnectionDetector(getApplicationContext());
isInternetPresent = cd.isConnectingToInternet();
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
24.06.2013, 21:59  [ТС]     Как запустить метод из другого класса? #3
@Digetix, огромное вам спасибо за пример, но а не могли бы вы свой выложенный код применить к моему выложенному коду, а то я не понимаю...
заранее спасибо за понимание.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 22:08     Как запустить метод из другого класса? #4
нельзя создавать экземпляр активити.
а почему вы поместили метод в другой класс?
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
24.06.2013, 22:19     Как запустить метод из другого класса? #5
Цитата Сообщение от V0v1k Посмотреть сообщение
нельзя создавать экземпляр активити.
а почему вы поместили метод в другой класс?
Это кому вопрос?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 22:25     Как запустить метод из другого класса? #6
да автору.
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
24.06.2013, 22:31  [ТС]     Как запустить метод из другого класса? #7
Цитата Сообщение от V0v1k Посмотреть сообщение
а почему вы поместили метод в другой класс?
просто мне нужно будет вызовать метод из разных других активностей и дублировать один и тот же код в каждом новом классе как-то не разумно. Хочу всё в одном классе разместить а потом просто вызывать метод. Ещё плюс там будет не один метод а несколько.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 23:16     Как запустить метод из другого класса? #8
ну так выносите метод с активити в какой-то отдельный вспомогательный класс или в родительский класс.
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
24.06.2013, 23:22  [ТС]     Как запустить метод из другого класса? #9
Цитата Сообщение от V0v1k Посмотреть сообщение
ну так выносите метод с активити в какой-то отдельный вспомогательный класс или в родительский класс.
я выношу, в первом посте описано, и код представлен. Но не получается, не запускается метод.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 23:23     Как запустить метод из другого класса? #10
где вы выносите? я не вижу.
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
24.06.2013, 23:36  [ТС]     Как запустить метод из другого класса? #11
Вот:
Java
1
2
3
4
5
6
7
8
9
10
public class Class2 extends Activity {
 
    private static final int REQUEST_LOGIN = 1;
 
                public void stActivity() {
        Intent intent = new Intent();
        intent.setClass(this, myActivity.class);
        startActivityForResult(intent, REQUEST_LOGIN);
    }
}
Добавлено через 11 минут
я для примера привел один метод...
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 23:46     Как запустить метод из другого класса? #12
это родительский класс или что?
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
24.06.2013, 23:51  [ТС]     Как запустить метод из другого класса? #13
Цитата Сообщение от V0v1k Посмотреть сообщение
это родительский класс или что?
нет, это просто отдельный ни от кого не зависящий класс, да ещё и в другом Package.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 23:52     Как запустить метод из другого класса? #14
а почему он активити?
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
24.06.2013, 23:54  [ТС]     Как запустить метод из другого класса? #15
Цитата Сообщение от V0v1k Посмотреть сообщение
а почему он активити?
просто я много тестов пытался проделать, чтобы запустить метод. Это было одним из них. Таким образом я пытался context получить.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 23:57     Как запустить метод из другого класса? #16
Java
1
2
3
4
5
6
7
8
9
10
public class Class2 {
 
    private static final int REQUEST_LOGIN = 1;
 
       public static void stActivity(Activity activity) {
        Intent intent = new Intent();
        intent.setClass(this, myActivity.class);
        activity.startActivityForResult(intent, REQUEST_LOGIN);
    }
}
Java
1
Class2 .stActivity(getActivity());
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
25.06.2013, 00:15  [ТС]     Как запустить метод из другого класса? #17
подчёркивает this в 3 строчке метода и пишет:
Java
1
Cannot use this in a static context
Добавлено через 5 минут
Наверное нужно использовать вместо this - activity.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.06.2013, 00:17     Как запустить метод из другого класса? #18
Цитата Сообщение от Stylish2013 Посмотреть сообщение
Наверное нужно использовать вместо this - activity.
ага, копипаст.
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
25.06.2013, 00:44  [ТС]     Как запустить метод из другого класса? #19
@V0v1k, Код который вы предоставили работает, вы гений!!!

Но у меня возникла загвоздка далее:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public static void method(final Activity activity) {
 
                   ...
        new Thread() {
            @Override
            public void run() {
                try {
                    System.out.println("Test");
                    // Показать сообщение в UI потоке
                    activity.runOnUiThread(sucRunnable);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }
 
 
    static Runnable sucRunnable = new Runnable() {
        @Override
        public void run() {
            Toast.makeText(activity, "Runnable",
                    Toast.LENGTH_LONG).show();
        }
    };
в строчке Toast.makeText(activity, "Runnable", Toast.LENGTH_LONG).show(); подчеркивает activity. Было this, но уже поменял на activity и не помогает. Пишет activity cannot be resolved to a variable.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2013, 00:57     Как запустить метод из другого класса?
Еще ссылки по теме:

Android Как запустить метод в сервисе, в определённое время?
Как запустить метод из Service? Android
Android Как передать данные в Activity из другого класса
Android Подскажите как запустить через Inten Activity другого приложения
Как запустить метод в заданное время Android

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

Или воспользуйтесь поиском по форуму:
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.06.2013, 00:57     Как запустить метод из другого класса? #20
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private static Runnable sucRunnable;
public static void method(final Activity activity) {
 if(sucRunnable == null){
        sucRunnable  = new Runnable() {
        @Override
        public void run() {
            Toast.makeText(activity, "Runnable",
                    Toast.LENGTH_LONG).show();
        }
    };
}
                   ...
        new Thread() {
            @Override
            public void run() {
                try {
                    System.out.println("Test");
                    // Показать сообщение в UI потоке
                    activity.runOnUiThread(sucRunnable);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }
}
Yandex
Объявления
25.06.2013, 00:57     Как запустить метод из другого класса?
Ответ Создать тему
Опции темы

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