Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / События / 5 сообщений из 5, страница 1 из 1
20.09.2013, 22:54:51
    #38403296
xneo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
События
Такой вот сверх простой вопрос. Только начал разбираться с Java, есть опыт на Delphi, поэтому приведу аналогию.

Есть класс, у которого есть событие (Delphi):
Код: pascal
1.
2.
3.
4.
5.
  TMyClass = class
    ...
  public
    property OnMyEvent: TNotifyEvent ... ;
  end;



Теперь мы можем просто присвоить обработчик этому событию:
Код: pascal
1.
2.
  C := TMyClass.Create;
  C.OnMyEvent := MyEvent;



Как это реализовать в Java? Тоесть какой самый простой способ в Java добавить в свой класс событие?
...
Рейтинг: 0 / 0
21.09.2013, 00:32:17
    #38403319
Паша01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
События
С такими вопросами лезь в книгу Хорстманн Кей, Корнелл Гари - Java 2. Библиотека профессионала. 7-е издание. Том 1 - Основы - 2007 Глава 8. Там чвсе что надо найдешь.
...
Рейтинг: 0 / 0
24.09.2013, 15:57:23
    #38406255
xneo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
События
Покритикуйте пожалуйста код :)
Суть следующая: при нажатии на кнопку в отдельном потоке отправляем HTTP запрос, результат надо вернуть в контекст основного потока. Как-то всё "накручено" слишко. Можно упростить?

Код: 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.
public class ActivityLogin extends Activity {

    public void btnLoginOnClick(View v) {

    	NotifyEvent ne = new NotifyEvent() 
    	{

		@Override
		public void run() {
			if (data == null) return;
			final NetAdminAPIRequest req = (NetAdminAPIRequest)data;
			runOnUiThread(new NotifyEvent()
			{
				@Override
				public void run() {
					Log.i("NetAdmin", req.errorStr);
				}
			});
			
		}
    	};
    	
    	try
    	{
    		api.reqLogin("admin", "wer", ne);
    	} catch (Throwable e) 
    	{
    		Log.e("NetAdmin", e.toString());
    	}
    }
    
} 



Код: 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.
public class NetAdminAPI {
	
	public void reqLogin(String login, String password, NotifyEvent onDone) throws Throwable {
		
                   ...

		final NetAdminAPIRequest req = new NetAdminAPIRequest();
		req.onDone = onDone;

		new Thread()
		{
			public void run()
			{
                                         ...
				
				if (req.onDone != null)
				{
					req.onDone.data = req;
					req.onDone.run();
				}
			}
		}.start();
	}
}



Код: java
1.
2.
3.
4.
5.
public class NetAdminAPIRequest {
	public String response = "";
	public String errorStr = "";
	public NotifyEvent onDone = null;
}



Код: java
1.
2.
3.
public abstract class NotifyEvent implements Runnable {
	public Object data = null;
}
...
Рейтинг: 0 / 0
24.09.2013, 16:02:02
    #38406267
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
События
Android? AsyncTask?
...
Рейтинг: 0 / 0
24.09.2013, 16:44:38
    #38406322
xneo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
События
BlazkowiczAndroid? AsyncTask?
О, вроде то что нужно :) Большое спасибо.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / События / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]