Je construis une application de liste de liste android. Je veux qu'un message soit retourné quand un url est cliqué de la liste qui est dans un tableau indiquant à l'utilisateur si le site est en différé ou en ligne. Je le fais par un ping rapide qui renvoie une valeur booléenne pour le dire. Je suis un débutant java et je sais que c'est quelque chose à voir avec la façon dont j'appelle la méthode pinUrl() comme lorsque je supprime une instruction if de onListItemClick() l'application ne plante pas.Java Android: Appeler une méthode
Voici mon MainActivity pour référence:
package com.seven.webtools;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.annotation.SuppressLint;
import android.app.ListActivity;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
@SuppressLint("UseValueOf")
public class MainActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources res = getResources();
String[] Sites = res.getStringArray(R.array.Sites);
setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,Sites));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// Get the selected url
super.onListItemClick(l, v, position, id);
Object o = this.getListAdapter().getItem(position);
String address = o.toString();
//Ping the address
String Status = "offline";
if (MainActivity.pingUrl(address) == true){
Status = "online";
}
//Return the result
Toast.makeText(this, address + " is " + Status, Toast.LENGTH_LONG).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public static boolean pingUrl(final String address) {
try {
final URL url = new URL("http://" + address);
final HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
urlConn.setConnectTimeout(1000 * 10); // mTimeout is in seconds
final long startTime = System.currentTimeMillis();
urlConn.connect();
final long endTime = System.currentTimeMillis();
if (urlConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
System.out.println("Time (ms) : " + (endTime - startTime));
System.out.println("Ping to "+address +" was success");
return true;
}
} catch (final MalformedURLException e1) {
e1.printStackTrace();
} catch (final IOException e) {
e.printStackTrace();
}
return false;
}
}
Merci beaucoup si vous pouvez me aider :)
hmmm ce qui est le problème? –
Lorsque je clique sur l'un des éléments de la liste, le message "L'application a cessé de fonctionner" s'affiche. –
Veuillez publier la trace de la pile à partir de logcat. Il montrera exactement quoi et où le problème est. – Simon