0

J'ai le code suivant. Je veux que onItemSelectedListener place la valeur de la chaîne sélectionnée dans store_id pour un traitement ultérieur. J'ai utilisé Toast pour l'examiner parce que je ne peux pas mettre une montre sur l'écouteur et store_id est null par défaut. Le fileur montre mes différentes cordes, mais disparaît lorsqu'on clique dessus. Des idées? Je ne peux pas imaginer mon problème est d'avoir tout le code dans ce fragment ensemble ... output right before clicking on a storeComment puis-je obtenir l'élément cliqué par spinner de l'onItemSelectedListener dans ce fragment?

public class ChooseStoreFragment extends Fragment implements AdapterView.OnItemSelectedListener { 
ArrayList<String> store_array = new ArrayList<>(); 
String store_id; 

//implementing the AdapterView.OnItemSelectedListener 
@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    String user_store_id = parent.getItemAtPosition(position).toString();//doesn't show up in toast 
    store_id = parent.getSelectedItem().toString();//doesn't show up in toast 
    Toast.makeText(getActivity(), user_store_id + "=user_store_id.", Toast.LENGTH_SHORT).show(); 
} 

@Override 
public void onNothingSelected(AdapterView<?> parent) { 
    Toast.makeText(parent.getContext(),"Nothing selected",Toast.LENGTH_SHORT).show(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    final View thisView = inflater.inflate(fragment_choose_store, container, false); 
    final Spinner spinner = (Spinner) thisView.findViewById(R.id.stores_spinner); 
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this.getContext(),android.R.layout.simple_spinner_dropdown_item,store_array); 
    spinner.setAdapter(adapter); 
    AdapterView.OnItemSelectedListener mListener = new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      store_id = parent.getSelectedItem().toString(); 
     } //still never shows up in toast 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 
      Toast.makeText(getActivity(), "none found = user_store_id.", Toast.LENGTH_SHORT).show(); //still nothing 
     } 
    }; 
    spinner.setOnItemSelectedListener(mListener); 
+0

Vous avez mis en place deux 'AdapterView.OnitemSelectedListener'. Lequel veut-tu? – BakaWaii

+0

Le premier. La deuxième mise en œuvre était juste une tentative de plus de localité étant un problème !? –

Répondre

0

Vous avez déjà enregistré un écouteur pour l'spinner, de sorte que vous ne devez pas faire ChooseStoreFragment que listener à nouveau mettre en œuvre .

spinner.setOnItemSelectedListener(mListener); 

Il devrait être comme ça

public class ChooseStoreFragment extends Fragment { 
    ArrayList<String> store_array = new ArrayList<>(); 
    String store_id; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     final View thisView = inflater.inflate(fragment_choose_store, container, false); 
     final Spinner spinner = (Spinner) thisView.findViewById(R.id.stores_spinner); 
     ArrayAdapter<String> adapter = new ArrayAdapter<>(this.getContext(), android.R.layout.simple_spinner_dropdown_item, store_array); 
     spinner.setAdapter(adapter); 
     AdapterView.OnItemSelectedListener mListener = new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       store_id = parent.getSelectedItem().toString(); 
      } //still never shows up in toast 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
       Toast.makeText(getActivity(), "none found = user_store_id.", Toast.LENGTH_SHORT).show(); //still nothing 
      } 
     }; 
     spinner.setOnItemSelectedListener(mListener); // Register this spinner for a mListener 
    } 
} 

Ou si vous voulez enregistrer écouteur pour vous classe

public class ChooseStoreFragment extends Fragment implements AdapterView.OnItemSelectedListener { 
    ArrayList<String> store_array = new ArrayList<>(); 
    String store_id; 

    //implementing the AdapterView.OnItemSelectedListener 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     String user_store_id = parent.getItemAtPosition(position).toString();//doesn't show up in toast 
     store_id = parent.getSelectedItem().toString();//doesn't show up in toast 
     Toast.makeText(getActivity(), user_store_id + "=user_store_id.", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 
     Toast.makeText(parent.getContext(), "Nothing selected", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     final View thisView = inflater.inflate(fragment_choose_store, container, false); 
     final Spinner spinner = (Spinner) thisView.findViewById(R.id.stores_spinner); 
     ArrayAdapter<String> adapter = new ArrayAdapter<>(this.getContext(), android.R.layout.simple_spinner_dropdown_item, store_array); 
     spinner.setAdapter(adapter); 
     spinner.setOnItemSelectedListener(this);// register this fragment with a listener 
    } 
} 

Inscrivez-vous pour seulement 1 auditeur!

MISE À JOUR:

public class ChooseStoreFragment extends Fragment implements AdapterView.OnItemSelectedListener { 
    ArrayList<String> store_array = new ArrayList<>(); 
    String store_id; 

    //implementing the AdapterView.OnItemSelectedListener 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     String user_store_id = store_array.get(position); 
     Toast.makeText(getActivity(), user_store_id, Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 
     Toast.makeText(getActivity(), "Nothing selected", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     final View thisView = inflater.inflate(R.layout.fragment_choose_store, container, false); 
     final Spinner spinner = (Spinner) thisView.findViewById(R.id.stores_spinner); 
     ArrayAdapter<String> adapter = new ArrayAdapter<>(this.getActivity(), android.R.layout.simple_spinner_dropdown_item, store_array); 
     spinner.setAdapter(adapter); 
     spinner.setOnItemSelectedListener(this);// register this fragment with a listener 
     return thisView; 
    } 
} 
+0

J'aime votre code, merci, gentil et propre, mais il n'y a toujours pas de données allant de onItemSelected à store_id. Pouvez-vous regarder la ligne/méthode parent.getSelectedItem()? –

+0

parce que votre store_array ne contient rien –

+0

Mais il le fait, il est chargé par un VolleyRequest et le spinner montre les données. La capture d'écran de ma sortie n'était pas encore autorisée dans ma question (classement inférieur). Jetez-vous un coup d'oeil à la capture d'écran? –