2010-11-15 4 views
0

Je semble être obtenir application se bloque à:accident android lors de l'utilisation setVisibility (View.VISIBLE)

parent.findViewById (R.id.a_1) .setVisibility (View.VISIBLE);

pas sûr de ce im faire un mauvais code

est inférieure à

layouttext.java

public class layouttest extends Activity { 
private Spinner solvefor; 
private ArrayAdapter<CharSequence> featuresAdapter; 
private List<CharSequence> featuresList; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     featuresList = new ArrayList<CharSequence>(); 
     featuresAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, featuresList); 
     featuresAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     solvefor = ((Spinner) layouttest.this.findViewById(R.id.solvefor)); 
     solvefor.setAdapter(featuresAdapter); 
     featuresAdapter.add("Velocity"); 
     featuresAdapter.add("Time"); 
     featuresAdapter.add("Distance"); 
     solvefor.setOnItemSelectedListener(new MyOnItemSelectedListener()); 
    } 
} 

paquet MyOnItemSelectedListener.java android.example.layouttest;

import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.Toast; 

public class MyOnItemSelectedListener implements OnItemSelectedListener { 
private static final int SPINNER_OPTION_FIRST = 0; 
    private static final int SPINNER_OPTION_SECOND = 1; 
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
    switch(pos) { 
     case SPINNER_OPTION_FIRST: { 
      Toast.makeText(parent.getContext(), "0", Toast.LENGTH_LONG).show(); 
      break; 
     } 
     case SPINNER_OPTION_SECOND: { 
      Toast.makeText(parent.getContext(), "1", Toast.LENGTH_LONG).show(); 
      parent.findViewById(R.id.a_1).setVisibility(View.VISIBLE); 
      parent.findViewById(R.id.a_2).setVisibility(View.VISIBLE); 
      break; 
     } 
    } 
} 
public void onNothingSelected(AdapterView<?> parent) {  
    // Do nothing.  
    } 
} 
+2

Etes-vous sûr que c'est 'parent' que vous voulez voir et non' view'? – Falmarri

+2

Pourriez-vous s'il vous plaît ajouter le journal d'application et la trace de pile d'exception. Sans eux, il est très difficile d'aider. – Juhani

Répondre

0

Rappelez-vous que View#findViewById commence sa recherche à partir de la vue que vous appelez sur et descend à ses enfants. Si la vue avec l'ID que vous recherchez n'est pas la vue elle-même ou un descendant de cette vue, la recherche échouera et findViewById renverra null. Comme le suggère Falmarri, vous ne pouvez pas appeler findViewById sur parent dans ce contexte. (Vous ne voudrez peut-être pas non plus l'appeler sur view à partir de là.)

Où dans votre hiérarchie d'affichage pensez-vous trouver R.id.a_1?