Ich habe ein Problem mit Android-Anwendung, die eine AsyncTask enthalten. Wenn ich versuche, es androidStudio zu debuggen bringe mich zu einem Abschnitt von Kommentaren von asynctask. Ich verstehe nicht, wenn dieses Problem durch Problem auf Bibliothek verursacht wird oder wenn das Problem auf der Logik der costruction ist: Ich habe eine Klasse, dieWarum wird meine AsyncTask-Klasse nicht debuggt?
-fetch eine ganze Zahl von UI dann
-Mittagessen AsyncTask, die verbinden auf einen Server und die Daten empfangen (Put seine auf eine Variable), dann
-redraw der ui und die Daten auf einem Textview
wie der Code dargestellt:
public class MainActivity extends Activity
{
LinearLayout spazioGen;
TextView[] cell;
LinearLayout[] rows;
LinearLayout def;
LinearLayout solution;
private Socket client;
private PrintWriter printwriter;
private BufferedReader in;
private EditText textField;
private TextView serverOut;
private Button button;
private String messsage;
private String inputLine;
private Integer dimensionChoosed = 10;
private String word1 = "";
private String word2 = "";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textField = (EditText) findViewById(R.id.dimension);
button = (Button) findViewById(R.id.findCenter);
button.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
messsage = textField.getText().toString(); // get the text message on the text field
textField.setText(""); // Reset the text field to blank
dimensionChoosed = Integer.parseInt(messsage.toString());
SendMessage sendMessageTask = new SendMessage();
sendMessageTask.execute();
createGriglia();
}
});
}
private void createGriglia(Integer dimensionChoosed)
{
int i,j;
spazioGen = new LinearLayout(this);
spazioGen.setOrientation(LinearLayout.VERTICAL);
spazioGen.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
spazioGen.setBackgroundDrawable(getResources().getDrawable(R.drawable.border_ext));
spazioGen.setPadding(5, 5, 5, 5);
//create an array of textview to fillup with data received from server
setContentView(spazioGen);
}
private class SendMessage extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... params)
{
try
{
client = new Socket("192.168.0.104", 4444); // connect to the server
printwriter = new PrintWriter(client.getOutputStream(), true);
printwriter.println(messsage); // write the message to output stream
printwriter.flush();
InputStreamReader inputStreamReader = new InputStreamReader(client.getInputStream());
BufferedReader bufferedReader = new BufferedReader(inputStreamReader); // get the client message
String message = "";
while ((message = bufferedReader.readLine()) != null && !(message.equals("flag")))
{
word1 = message;
//do stuff with data received
}
while ((message = bufferedReader.readLine()) != null)
{
word2 = message;
//do stuff with data received
}
inputStreamReader.close();
System.out.println(message);
printwriter.close();
client.close(); // closing the connection
} catch (UnknownHostException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid)
{
createGriglia(dimensionChoosed);
}
}
}
Vielen Dank im Voraus
Löschen Sie Ihre App von Ihrem Gerät. Säubern Sie Ihr Projekt und installieren Sie die App erneut und sehen Sie, ob es Ihnen hilft. – Ahmed
Keine Änderungen für sauberes Projekt ... jetzt versuche ich, die letzte Version von Android Studio neu zu starten und zu installieren ... – ocrampico
Hält der Debugger die App an, wenn Sie einen Haltepunkt in Zeile 'client = new Socket (" 192.168.0.104 ") setzen, 4444); '? Wird die Ausnahme in einem der 'catch' Blöcke in' doInBackground' gefangen? Welche Art von Problem bekommen Sie? – kit