Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/44: Рейтинг темы: голосов - 44, средняя оценка - 4.57
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
#1

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

24.06.2013, 21:22. Просмотров 7995. Ответов 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. Я так понимаю проблемы с контекстом, помогите примером или поправьте выложенный код, уже не знаю как правильно здесь всё сделать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2013, 21:22
Ответы с готовыми решениями:

Как изменить Textview из другого класса (класса адаптера RecyclerView)
У меня есть список RecyclerView тоесть этот файл Basket и файл что реализует...

Подскажите как запустить через Inten Activity другого приложения
Добрый день! весь смысл такой я могу просто запустить другое приложение,...

Как выполнить setContentView из другого класса?
Есть класс "Core" который является "точкой входа" в приложение, и есть класс в...

Как запустить метод из Service?
При запуске сервиса в onCreate запускается метод, когда он отрабатывает...

Как передать данные в Activity из другого класса
При нажатии на кнопку, создается активити orgAdapter = new OrgAdapter(this,...

21
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
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();
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
24.06.2013, 21:59  [ТС] #3
@Digetix, огромное вам спасибо за пример, но а не могли бы вы свой выложенный код применить к моему выложенному коду, а то я не понимаю...
заранее спасибо за понимание.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 22:08 #4
нельзя создавать экземпляр активити.
а почему вы поместили метод в другой класс?
0
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
24.06.2013, 22:19 #5
Цитата Сообщение от V0v1k Посмотреть сообщение
нельзя создавать экземпляр активити.
а почему вы поместили метод в другой класс?
Это кому вопрос?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 22:25 #6
да автору.
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
24.06.2013, 22:31  [ТС] #7
Цитата Сообщение от V0v1k Посмотреть сообщение
а почему вы поместили метод в другой класс?
просто мне нужно будет вызовать метод из разных других активностей и дублировать один и тот же код в каждом новом классе как-то не разумно. Хочу всё в одном классе разместить а потом просто вызывать метод. Ещё плюс там будет не один метод а несколько.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 23:16 #8
ну так выносите метод с активити в какой-то отдельный вспомогательный класс или в родительский класс.
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
24.06.2013, 23:22  [ТС] #9
Цитата Сообщение от V0v1k Посмотреть сообщение
ну так выносите метод с активити в какой-то отдельный вспомогательный класс или в родительский класс.
я выношу, в первом посте описано, и код представлен. Но не получается, не запускается метод.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 23:23 #10
где вы выносите? я не вижу.
0
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 минут
я для примера привел один метод...
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 23:46 #12
это родительский класс или что?
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
24.06.2013, 23:51  [ТС] #13
Цитата Сообщение от V0v1k Посмотреть сообщение
это родительский класс или что?
нет, это просто отдельный ни от кого не зависящий класс, да ещё и в другом Package.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 23:52 #14
а почему он активити?
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
24.06.2013, 23:54  [ТС] #15
Цитата Сообщение от V0v1k Посмотреть сообщение
а почему он активити?
просто я много тестов пытался проделать, чтобы запустить метод. Это было одним из них. Таким образом я пытался context получить.
0
V0v1k
1160 / 984 / 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());
1
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.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.06.2013, 00:17 #18
Цитата Сообщение от Stylish2013 Посмотреть сообщение
Наверное нужно использовать вместо this - activity.
ага, копипаст.
0
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.
0
V0v1k
1160 / 984 / 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();
    }
}
1
25.06.2013, 00:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2013, 00:57

Как запустить метод в заданное время
Доброго времени суток) Борюсь над задачей, в которой нужно, чтобы в указанное...

Как запустить метод в Activity из BroadcastReceiver
Здравствуйте!!! Все до банальности просто и повторяется, по кругу :) Новичок,...

Как запустить метод Fragment из MainActivity?
есть фрагмент с картой, в нем метод: public void Sputnik(GoogleMap map) { ...


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

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

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