2011-07-07 2 views
1

comment je faire un objet de boutons vues textviews globalement accessibles dans l'activité ... j'ai utilisé le code ci-dessous mais son travail maintenant ..Android objets accessibles globalement dans la classe

private View dummy = (View) View.inflate(this, R.layout.main, null); 
private TextView p1 = (TextView)dummy.findViewById(R.id.player1other); 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(dummy); 
} 
..... 
..... 
    public OnClickListener mCorkyListener = new OnClickListener() { 

     @Override 
    public void onClick(View v) { 

     switch(v.getId()) 
     { 
     case R.id.player1:  
     p1.setText(Integer.toString(scores.scores[0])); 

         break;  }} 

Répondre

1

Vous ne pouvez pas donner référence de l'activité avant son ouverture. Vous pouvez faire votre travail désiré de cette manière

private View dummy; 
private TextView p1; 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(dummy); 
     dummy = (View) View.inflate(this, R.layout.main, null); 
     p1 = (TextView)dummy.findViewById(R.id.player1other); 
} 
..... 
..... 
    public OnClickListener mCorkyListener = new OnClickListener() { 

     @Override 
    public void onClick(View v) { 

     switch(v.getId()) 
     { 
     case R.id.player1:  
     p1.setText(Integer.toString(scores.scores[0])); 

         break;  }} 
0

Déclarez vos vues comme variable de classe

Class A{ 
EditText edit1; 

} 

edit1 sera accessible partout dans la classe

0

Vous devez tout d'abord appeler setContentView() avant d'utiliser findViewByID() pour findViewByID() pour savoir où chercher les vues. Comme ceci:

private TextView p1; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    p1 = (TextView)dummy.findViewById(R.id.player1other); 
} 

dire d'abord juste déclarer p1, puis appelez appropriée setContentView() dans onCreate(), puis initialiser p1.

0

Plutôt que d'utiliser cette ligne ....

private View dummy = (View) View.inflate(this, R.layout.main, null); 

Utilisez cette

LayoutInflater l1 = this.getLayoutInflater(); 
private View dummy = l1.inflate(R.layout.main, null); 
0

Essayez ceci:

private TextView p1; 

@Override 
public void onCreate(savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    p1 = (TextView) findViewById(R.id.player1other); 
} 

et le reste est la même.

Questions connexes