Пишу в программе eclipce. Цель приложения - отправлять определенные команды по udp при нажатии на кнопку.
Разобравшись с кнопками, полями ввода и вывода текста я столкнулся с проблемой привязки самой функции упаковки и отправки к кнопке.
В главном файле приложения у меня есть следующее дерево классов:
public class MainActivity extends Activity
{
public class Sender //класс отправки
{
public void sendMessage(String mes)
{
//код создания и упаковки датаграммы который и нужно запустить
}
public void main(String[] text)
{
//код создания отправителя
}
}
public void onCreate(Bundle savedInstanceState) //метод описывающий такие элементы как кнопка, поле ввода и вывода
{
OnClickListener oclBtnUdp = new OnClickListener() //слушатель нажатия кнопки
{
public void onClick(View v)
{
//код который выполнится при нажатии кнопки.
//Именно здесь нужно указать что запустить. (Сама проблема)
}
}
}
}
Изучаю сам язык Java недавно и успел выучить только некоторые основные понятия, потому все еще не до конца понял что нужно положить в
public void onClick(View v)
чтобы оно отправило команду по udp.
Покорнейше прошу помочь и по возможности объяснить что я делаю не так.
полный код файла MainActivity.java прилагаю :
spoilerpackage com.exampletestudp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
public String asd;
public EditText editText12;
public TextView tvOut;
public Button btnOk;
public Button btnCancel;
public Button btnUdp;
public Button btnAdd;
public Button myMenu;
byte[] text = null;
//сам класс отправки
public class Sender {
public String host;
public int port;
Sender(String host, int port){
this.host = host;
this.port = port;
}
public String mes = "comanda";
public void sendMessage(String mes){
mes = "comanda";
try{
byte[] data = mes.getBytes();
port = 50000;
host = asd ; //"10.0.1.5"
InetAddress addr = InetAddress.getByName(host);
asd = null;
text = mes.getBytes();
DatagramPacket pack =
new DatagramPacket( data, data.length, addr, port);
DatagramSocket ds = new DatagramSocket(port);
ds.send(pack);
ds.close();
}catch(IOException e){
System.err.println(e);
}
}
public void main(String[] text){
Sender sndr = new Sender(asd, 50000);
for (int k = 0; k < text.length; k++)
sndr.sendMessage(text[k]);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
// найдем View-элементы
editText12 = (EditText) findViewById(R.id.editText1) ;
tvOut = (TextView) findViewById(R.id.tvOut);
btnAdd = (Button) findViewById(R.id.btnAdd);
btnOk = (Button) findViewById(R.id.btnOk);
btnCancel = (Button) findViewById(R.id.btnCancel);
btnUdp = (Button) findViewById(R.id.btnUdp);
myMenu = (Button) findViewById(R.id.myMenu);
// создаем кнопку отправки сообщения
OnClickListener oclBtnUdp = new OnClickListener() {
@Override
public void onClick(View v) {
// сюда нужно подставить ссылку на функцию отправки
tvOut.setText("отправлено на "+ asd );
}
};
// создаем кнопку приема и сохранения из поля ввода IP назначения
OnClickListener oclBtnAdd = new OnClickListener() {
@Override
public void onClick(View v) {
// Меняем текст в TextView (tvOut)
asd = editText12.getText().toString();
tvOut.setText(asd+" сохранен");
}
};
OnClickListener oclBtnOk = new OnClickListener() {
@Override
public void onClick(View v) {
// Меняем текст в TextView (tvOut)
tvOut.setText("Нажата кнопка ОК");
}
};
OnClickListener oclBtnCancel = new OnClickListener() {
@Override
public void onClick(View v) {
// Меняем текст в TextView (tvOut)
tvOut.setText("Нажата кнопка Cancel");
}
};
// присвоим обработчик кнопкам
btnAdd.setOnClickListener(oclBtnAdd);
btnOk.setOnClickListener(oclBtnOk);
btnCancel.setOnClickListener(oclBtnCancel);
btnUdp.setOnClickListener(oclBtnUdp);
}
}