2012-06-22 9 views
10

¿Alguien sabe cómo configurar programáticamente el texto de un botón?Android Programming setting program text

cosa es que no estoy llamando a esto desde el diseño principal (setContentView) lo estoy llamando en una vista que está inflada después de una asynctask aquí lo he intentado, pero esto está dando una excepción de puntero nulo en la 2da línea

Button mButton=(Button)findViewById(R.id.contact); 
     mButton.setText("number"); 

heres mi presentación en la que estoy llamando el botón

<Button 
     android:id="@+id/contact" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/address" 
     android:layout_toLeftOf="@+id/badge" 
     android:background="@drawable/ic_btn_call" 
     android:textSize="10dp" 
     android:textStyle="bold" 
     android:textColor="@color/white"/> 

aquí mi punto de vista estoy inflando

ClubInfo = LayoutInflater.from(getBaseContext()).inflate(R.layout.clubinfocell, 
       null); 

     TextView TeamNameText = (TextView) ClubInfo.findViewById(R.id.TeamName); 
     TeamNameText.setText(teamName); 

     TextView AddressText = (TextView) ClubInfo.findViewById(R.id.address); 
     AddressText.setText(address1); 



     Button mButton=(Button)ClubInfo.findViewById(R.id.contact); 
     mButton.setText(telephone); 
+0

puede publicar su método onCreate completa ¿aquí? – Cata

+1

por favor proporcione su archivo de código de Java completo. –

+1

Da NPE porque mButton es nulo en la primera línea. Y eso es porque findViewById no encontró un R.id.contacto que le hayas proporcionado. –

Respuesta

20

A continuación, el uso de objetos de su objeto de inicializarlo:

Button mButton = (Button)your_view_object.findViewById(R.id.contact); 
mButton.setText("number"); 

al intentar identificar un punto de vista que no sea la disposición de su actividad, lo que tiene que pasar la referencia de esa vista como esta. Si no, Android seguirá buscando este elemento en el diseño que proporcionó en el setContentView().

Por ejemplo, considere que haya inflado una vista como esta:

View View = mInflater.inflate(R.layout.gridelement, null); 

A continuación, utilizar el objeto de esta vista para el botón presente en ese diseño inflado:

Button mButton = (Button)View.findViewById(R.id.contact); 
+0

he editado mi código para mostrar mi vista todavía estoy recibiendo excepción de puntero nulo –

+0

Intente rodear esto, con verificación nula, if (mButton! = Null) {mButton.setText (teléfono);} –

1

su mButton es null.so NPE.are que refrenced recursos XML después del cambio setContentView

onCreate(){ 
... 
setContentView(R.layout.yourlayout); 

Button mButton=(Button)findViewById(R.id.contact); 
mButton.setText("number"); 

} 
1

su código como:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main);//set layout here in which u have add contact in xml 
     Button mButton=(Button)findViewById(R.id.contact); 
     mButton.setText("number"); 

EDIT: Sus \ res \ layout \ principales. xml se ven así:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
<Button 
     android:id="@+id/contact" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/address" 
     android:layout_toLeftOf="@+id/badge" 
     android:background="@drawable/ic_btn_call" 
     android:textSize="10dp" 
     android:textStyle="bold" 
     android:textColor="@color/white"/> 
</LinearLayout> 
+0

problema es que no se ha cargado desde la vista de contenido es un botón dentro de una vista inflada que he inflado después de una Asynctask –

+0

@LukeBatley: como su pregunta está obteniendo todas las respuestas correctas. Si el problema no se resuelve, publique más código y complete explicación del problema –

+0

@LukeBatley: use 'LayoutInflater inflater = (LayoutInflater) context.getSystemService (LAYOUT_INFLATER_SERVICE); Ver ClubInfo = inflater.inflate (R.layout.clubinfocell, null); 'en lugar de' ClubInfo = LayoutInflater.desde (getBaseContext()). inflate (R.layout.clubinfocell, null); ' –

0

ver R.java archivos i mport comunicado

¿está seguro de que tiene que importar del proyecto se utiliza .. y justo formato a su disposición (.xml) archivo de guardarlo y volver a escribir la misma declaración