Я новичок в android и мне нужна помощь, пожалуйста. Я создал TCP-чат с потоками для Android, теперь я хочу поместить все в действие, содержащее 2 фрагмента, в первом я хочу, чтобы список подключенных пользователей отображался в представлении списка, во втором фрагменте, который я хочу реализовать код, который у меня есть Для чата, когда я создаю оба фрагмента и добавляю представление списка, он работает, но когда вы вводите код чата во втором фрагменте, он не работает.
Мне нужна помощь пожалуйста, спасибо заранее
MainActivity. java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Фрагмент Синий (фрагмент чата с темами)
public class FragmentChat extends Fragment {
private Button btEnvia;
private TextView tvChat;
private EditText etEscribe;
//Variables al recibir de la primera actividad
private String nickRecojo;
private String IpRecojo;
private String puertoRecojoStr; //el puerto se introduce como String para mandarlo
private int puertoInteger; //convertimos el string de puerto a int
String msgEnviar;
Socket cliente;
String mensaje = "";
DataOutputStream dos;
Thread hilo=null;
String cadena;
String nickName = "androidTest";
int puerto = 61000;
String host = "192.168.56.1";
//arrayList para guardar clientes
ArrayList<String> clientes = new ArrayList<String>();
public FragmentChat() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
tvChat = (TextView)getView().findViewById(R.id.textView);
btEnvia = (Button)getView().findViewById(R.id.button);
etEscribe = (EditText)getView().findViewById(R.id.editText2);
Thread hilo = new Thread(new HiloSocket());
hilo.start();
// ------------------ Enviar Chat
btEnvia.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
enviarMensaje();
//tvChat.setText(cadena);
} catch (Exception e) {
e.printStackTrace();
}
}
});
return inflater.inflate(R.layout.fragmentos_chat, container, false);
}
private class HiloSocket extends Thread {
public HiloSocket(){}
public void run(){
try {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
cliente = new Socket(host, puerto);
dos = new DataOutputStream(cliente.getOutputStream());
dos.writeUTF(nickName); //Send nick to server in java(eclipse)
String nickControl="###"+nickName+"###";
dos.writeUTF(nickControl);
//------------- Recibir chat----------------
recibirChat();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void enviarMensaje()throws IOException{
msgEnviar = etEscribe.getText().toString();
dos.writeUTF(msgEnviar);
mensaje = mensaje + "\n"+ "Yo: " + msgEnviar;
tvChat.setText(mensaje);
etEscribe.setText("");
}
//METODO PARA RECIBIR EL CHAT
private void recibirChat() {
new Thread(new Runnable() {
public void run() {
while (true) {
try {
DataInputStream disChat = new DataInputStream(cliente.getInputStream());
String mensajeRecibido = disChat.readUTF();
mensaje = mensaje + "\n" + mensajeRecibido;
getActivity().runOnUiThread(new Runnable() {
public void run() {
tvChat.setText(mensaje);
}
});
//
} catch (IOException e) {
System.out.println("Error al recibir mensaje: " + e.getMessage());
}
}
}
}).start();
}
}
Фрагмент Зеленый (Пользователи) на данный момент ничего не делают
public class FragmentUsuarios extends Fragment {
public FragmentUsuarios() {
// Required empty public constructor
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View vista = inflater.inflate(R.layout.fragmento_usuarios, container, false);
// Inflate the layout for this fragment
ArrayList<String> alclientes =new ArrayList<String>();
alclientes.add("usuario1");
alclientes.add("usuario2");
alclientes.add("usuario3");
//String [] menuItems = {"Cliente 1", "Cliente 2", "Cliente 3"};
ListView listas = (ListView)vista.findViewById(R.id.lista);
ArrayAdapter<String> adaptador = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, alclientes);
listas.setAdapter(adaptador);
listas.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position == 0) {
Toast.makeText(getActivity(), "Has pulsado el primer elemento", Toast.LENGTH_SHORT).show();
}
if (position == 1) {
Toast.makeText(getActivity(), "Has pulsado el segundo elemento", Toast.LENGTH_SHORT).show();
}
if (position == 2) {
Toast.makeText(getActivity(), "Has pulsado el tercer elemento", Toast.LENGTH_SHORT).show();
}
}
});
return vista;
}
}
Я загрузил фрагменты. java, xml необходим? Большое спасибо