В своей LensActivity вы создаете намерение, которое никогда не используете. Намерение таково:
Intent lensIntent = new Intent(LensActivity.this,MainActivity.class);
lensIntent.putExtra("LensIntent",lensString);
Вместо этого вы должны создать его в прослушивателе щелчка элементов. Просто удалите приведенный выше код и измените слушателя следующим образом:
mAdapter.setOnItemClickListener(new LensAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
//Crea String con la informacion de posicion y texto del lente
String lensPosition = lensList.get(position).getLens();
lensString = lensPosition;
Intent lensIntent = new Intent(LensActivity.this,MainActivity.class);
lensIntent.putExtra("LensIntent",lensString);
Toast.makeText(getApplicationContext(),"this is " + lensString , Toast.LENGTH_SHORT).show();
startActivity(lensIntent);
}
});
Спасибо вам обоим очень за Ваши ответы. Я принял решение реализовать его, путь mghie описал это - путем реализации пользовательского класса перехватчика для моих соединений. Только для заинтересованных решением, я обеспечу некоторый исходный код здесь:
type
TCountTrafficInterceptor = class (TIdConnectionIntercept)
public
type TIntPointer = ^Longint;
private
FTraffic : TIntPointer;
public
constructor Create (TrafficVar : TIntPointer);
procedure Send (var ABuffer : TIdBytes); override;
procedure Receive (var ABuffer : TIdBytes); override;
end;
constructor TCountTrafficInterceptor.Create (TrafficVar : TIntPointer);
begin
FTraffic := TrafficVar;
end;
procedure TCountTrafficInterceptor.Send (var ABuffer : TIdBytes);
begin
inherited Send (ABuffer);
FTraffic^ := FTraffic^ + Length (ABuffer);
end;
procedure TCountTrafficInterceptor.Receive (var ABuffer : TIdBytes);
begin
inherited Receive (ABuffer);
FTraffic^ := FTraffic^ + Length (ABuffer);
end;
И в методе OnConnect TIdTCPCmdServer:
AContext.Connection.IOHandler.Intercept :=
TCountTrafficInterceptor.Create (@FNetworkTraffic);
Работает отлично, просто вид решения, которое я искал. Еще раз спасибо за Ваши ответы.
Btw: Как я могу использовать (в), входят в систему мои сообщения? Я всегда получаю блок цитирования, когда я пытаюсь ввести его...
Изучите классы прерывания Инди. Необходимо смочь создать пользовательский класс прерывания, который переопределяет Получение (), и Отправьте (), методы, и в дополнение к вызову методов базового класса реализуют транспортное вычисление. Уже существуют классы прерывания, чтобы сделать вход, Вы соединили бы свой пользовательский класс таким же образом.
Документация TIdConnectionIntercept должна быть хорошей начальной точкой. Существует также очень простой пример здесь о том, как создать и соединить прерывание во времени выполнения.
Перенестись TCPCmdServer
в класс, который регистрирует трафик.
Можно получить класс из TCPCmdServer, и переопределение отправляют и получают методы, если они являются виртуальными.
Что-то как:
type
TTcpCmdServerWithLogging = class(TTcpCmdServer)
...
procedure SendReply; override;
implementation
procedure SendReply;
begin
inherited SendReply;
Inc (FTraffic, Sizeof (NormalReply.Code) +
Sizeof (Char) * NormalReply.Text.Length));
end;
Если они не являются виртуальными, то создают новый класс, который инстанцирует TCPCmdServer, и выставьте требуемые методы и свойства.