0
I am new in this part of compilation for Android APP, I would like to know how to start a class q is in the same java file, for example: my 'Mainactivity', already declared the button that should start the class "Udp_client", but every time q press this button it gives error, someone can help me??
public class MainActivity extends AppCompatActivity {
public static final String MESSAGE_RECEIVED = "";
public String Payload = "2459247B0";
public String IP_Address = "192.168.2.255";
public String FeedbackUDP;
public String eltin;
public int port = 4212;
public boolean Server_Act = true;
public boolean turnCheck = false;
private AppBarConfiguration mAppBarConfiguration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main););
Switch turn = findViewById(R.id.switch1);
final TextView ip = findViewById(R.id.textView3);
final TextView payload = findViewById(R.id.textView4);
turnCheck = turn.isChecked();
turn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(turnCheck = true){
Payload = "2459247B1";
payload.setText(Payload);
ip.setText(eltin);
}else{
Payload = "2459247B0";
payload.setText(Payload);
ip.setText(eltin);
}
Intent intent = new Intent(MainActivity.this,UDP_Client.class);
startActivity(intent);
UDP_Client client = new UDP_Client();
try {
client.NachrichtSenden();
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
});
And the Udp_client class
class UDP_Client extends IOException {
MainActivity dir = new MainActivity();
private AsyncTask<Void, Void, Void> asyncTask;
@SuppressLint("NewApi")
public void NachrichtSenden() throws UnknownHostException {
asyncTask = new AsyncTask<Void, Void, Void>() {
MainActivity mainActivity = new MainActivity();
byte[] ip = InetAddress.getByName(dir.IP_Address).getAddress();
InetAddress IP = InetAddress.getByAddress(ip);
@Override
protected Void doInBackground(Void... voids) {
try
{
DatagramSocket socket = new DatagramSocket(4212,IP);
DatagramPacket packet;
packet = new DatagramPacket(dir.Payload.getBytes(), dir.Payload.length(), IP, dir.port);
socket.setBroadcast(true);
socket.send(packet);
dir.eltin = IP.getHostAddress();
}
catch (Exception e)
{
e.printStackTrace();
dir.eltin = "ERROR!";
dir.Payload = "ERROR!";
}
return null;
}
};
}
}
And the mistake...
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.automatizze/com.example.automatizze.UDP_Client}: java.lang.IllegalAccessException: java.lang.Class is not accessible from java.lang.Class
Someone has some idea of what it is?
when you call
Intent intent = new Intent(MainActivity.this,UDP_Client.class);
startActivity(intent);
the method takes as parameter a class that extends Appcompat... But in your case you are calling a class an asynctask and not an Activity, hence the error. By removing this part I put in, it may be possible to undo the error. But still I believe that will give error in this class of asynctask, it is a little confused.– Murillo Comino
It did not error, but did not start Udp_client :/ E agr?
– Mr. Kak4k0ur1
I changed the code a little bit instead of initializing the class with
UDP_Client client = new UDP_Client();
 try {
 client.NachrichtSenden();
 } catch (UnknownHostException e) {
 e.printStackTrace();
 }
To starting with:UDP_Client client = new UDP_Client();
 client.asyncTask.execute();
– Mr. Kak4k0ur1
If this asynctask is in the same Mainactivity java file, it removes every instance of Mainactivity in the Udp_client class. Since you have already stated the variables in the main class, you do not need to create an instance to manipulate it. That is, instead of using: dir.eltin, just use eltin. If it still doesn’t work, try debugging line/per line and check the returned values.
– Murillo Comino