Bonjour, désolé pour la question qui peut paraître bête pour certains.
J'utilise Android Studio, j'aimerais appeler une méthode que j'ai créé dans une classe "SpinnersAdd" dans mon "MainActivity"
Après des recherches j'ai fait ce code dans la classe main :
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
SpinnersAdd spinner = new SpinnersAdd();
spinner.CreateSpinner();
}
et voilà la classe où j'ai ma méthode :
public class SpinnersAdd extends MainActivity {
public SpinnersAdd(){
}
public void CreateSpinner(){
ArrayList<String> listChantier = new ArrayList<String>();
ArrayList<String> listNoms = new ArrayList<String>();
Spinner spinnerChantier;
Spinner spinnerNom;
URL test = null;
System.out.println("Bouton clicked");
try {
// Connexion à l'URL CHANTIER
System.out.println("Connexion URL Chantier.txt");
URL urlChantier = new URL("https://fossa.emodus.fr/emodusdev/truc.txt");
URLConnection ycChantier = urlChantier.openConnection();
// Connexion à l'URL nom
System.out.println("Connexion URL Chantier.txt");
URL urlNom = new URL("https://fossa.emodus.fr/emodusdev/truc2.txt");
URLConnection ycNom = urlNom.openConnection();
// Récupération des données CHANTIERS
BufferedReader inChantiers = new BufferedReader(new InputStreamReader(
ycChantier.getInputStream()));
// Récupération des données NOMS
BufferedReader inNoms = new BufferedReader(new InputStreamReader(
ycNom.getInputStream()));
// Création de la variable qui va stocker les lignes 1par1
String inputLine;
// Enregistrement dans la liste des CHANTIERS
while ((inputLine = inChantiers.readLine()) != null)
// System.out.println(inputLine);
listChantier.add(inputLine);
inChantiers.close();
// Enregistrement dans la liste des NOMS
while ((inputLine = inNoms.readLine()) != null)
// System.out.println(inputLine);
listNoms.add(inputLine);
inNoms.close();
// Adapter pour mettre dans le spinner (CHANTIER)
ArrayAdapter<String> adapterChantier = new ArrayAdapter<>(
this,
android.R.layout.simple_spinner_item,
listChantier
);
// Adapter pour mettre dans le spinner (NOMS)
ArrayAdapter<String> adapterNom = new ArrayAdapter<>(
this,
android.R.layout.simple_spinner_item,
listNoms
);
// On definit une présentation du spinner quand il est déroulé (android.R.layout.simple_spinner_dropdown_item)
adapterChantier.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapterNom.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// On trouve le spinner à associer par ID
spinnerChantier = (Spinner) findViewById(R.id.spinnerChantier);
spinnerNom = (Spinner) findViewById(R.id.spinnerNom);
//Enfin on passe l'adapter au Spinner et c'est tout
spinnerChantier.setAdapter(adapterChantier);
spinnerNom.setAdapter(adapterNom);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
J'imagine pour ceux qui sont fort en JAVA que mon code vous a sûrement fait rire, mais comme je l'ai dit je débute en JAVA et POO
Bref le problème : Quand je lance l'application elle crash au moment du CreateSpinner(); alors qu'elle marche parfaitement quand je mets la méthode directement dans le main à l'arrache.
Merci à vous j’espère que vous pouvez me sauver la vie !
Enfaite j'ai l'impression que c'est parce que j'utilise des composant graphique dedans, voilà le code :
En dehors du OnCreate() :
J'ai que des méthodes (mais aucun problèmes avec) :
public void addListenerOnButtonArrived() {....}
public void addListenerOnButtondDepart() {....}
public void addListenerOnChkbox() {....}
public void ShowUser() {....}
public void addListenerOnButtonValidartion() {....}
Voilà le contenu de mon OnCreate() au kasou :
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
// spinner.CreateSpinner();
// ____________________WORKED____________________________________________________
//Chantiers chantiers = new Chantiers("Nom test", "Adresse test");
// System.out.println("___________________________________________");
//System.out.println(chantiers.Nom + " " + chantiers.Adresse);
//System.out.println("___________________________________________");
// ______________________________________________________________________________
// Méthode button Arrived
// Utilisation des méthodes
// Listerner buttons et checkbox /
addListenerOnButtonArrived();
addListenerOnButtonDepart();
addListenerOnChkbox();
addListenerOnButtonValidation();
ArrayList<String> listChantier = new ArrayList<String>();
ArrayList<String> listNoms = new ArrayList<String>();
try {
// Connexion à l'URL CHANTIER
System.out.println("Connexion URL Chantier.txt");
URL urlChantier = new URL("https://fossa.emodus.fr/emodusdev/chantiers.txt");
URLConnection ycChantier = urlChantier.openConnection();
// Connexion à l'URL nom
System.out.println("Connexion URL Chantier.txt");
URL urlNom = new URL("https://fossa.emodus.fr/emodusdev/users.txt");
URLConnection ycNom = urlNom.openConnection();
// Récupération des données CHANTIERS
BufferedReader inChantiers = new BufferedReader(new InputStreamReader(
ycChantier.getInputStream()));
// Récupération des données NOMS
BufferedReader inNoms = new BufferedReader(new InputStreamReader(
ycNom.getInputStream()));
// Création de la variable qui va stocker les lignes 1par1
String inputLine;
// Enregistrement dans la liste des CHANTIERS
while ((inputLine = inChantiers.readLine()) != null)
// System.out.println(inputLine);
listChantier.add(inputLine);
inChantiers.close();
// Enregistrement dans la liste des NOMS
while ((inputLine = inNoms.readLine()) != null)
// System.out.println(inputLine);
listNoms.add(inputLine);
inNoms.close();
// Adapter pour mettre dans le spinner (CHANTIER)
ArrayAdapter<String> adapterChantier = new ArrayAdapter<>(
this,
android.R.layout.simple_spinner_item,
listChantier
);
// Adapter pour mettre dans le spinner (NOMS)
ArrayAdapter<String> adapterNom = new ArrayAdapter<>(
this,
android.R.layout.simple_spinner_item,
listNoms
);
// On definit une présentation du spinner quand il est déroulé (android.R.layout.simple_spinner_dropdown_item)
adapterChantier.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapterNom.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// On trouve le spinner à associer par ID
spinnerChantier = (Spinner) findViewById(R.id.spinnerChantier);
spinnerNom = (Spinner) findViewById(R.id.spinnerNom);
//Enfin on passe l'adapter au Spinner et c'est tout
spinnerChantier.setAdapter(adapterChantier);
spinnerNom.setAdapter(adapterNom);
showUserAndChantier();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Merci d'être les seuls à m'aider
@Tonio C'est pas l'effet voulu mais en tout cas il reste Enfaite j'ajoute juste les valeurs dans le create
- Edité par Yuply 25 avril 2017 à 11:49:04
Utiliser une méthode dans une autre classe (void)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Licence Pro Dev Mobile - Apprenti Manager Systèmes Informatiques et Robotiques, IMERIR Perpignan
Licence Pro Dev Mobile - Apprenti Manager Systèmes Informatiques et Robotiques, IMERIR Perpignan
Licence Pro Dev Mobile - Apprenti Manager Systèmes Informatiques et Robotiques, IMERIR Perpignan