2012-06-22 13 views
10

Czy ktoś wie, jak programowo ustawić tekst przycisku?Android Programowo ustawiający tekst przycisku

rzeczą nie wywołuję tego z głównego layoutu (setContentView) Wezwę to w widoku, który jest zawyżony po asynctask heres co próbowałem, ale daje to wyjątek wskaźnika pustego w drugiej linii

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

herezje mój układ gdzie Wołam przycisk

<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"/> 

tutaj moim zdaniem jestem pompowania

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

można zamieścić swoje metody pełnej onCreate tutaj? – Cata

+1

proszę podać pełny plik kodu Java. –

+1

Daje NPE, ponieważ mButton ma wartość null w pierwszym wierszu. A to dlatego, że findViewById nie znalazł podanego przez Ciebie obiektu R.id.contact. –

Odpowiedz

20

następnie użyć obiektu widoku danych, aby zainicjować go:

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

Podczas próby zidentyfikowania widok inny niż układ swoją aktywność użytkownika, trzeba zdać publikacji tego widoku jak ten. Jeśli nie Android będzie szukał tego elementu z układu, który podałeś w setContentView().

Rozważmy na przykład masz zawyżone widok tak:

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

Następnie użyj tego poglądu za obiekt na razie przycisk w tej nadmuchanej układ:

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

Mam edytować kod, aby pokazać mój widok wciąż otrzymuję wskaźnik pustego wyjątku –

+0

Spróbuj otoczyć to, z zerową kontrolą, jeśli (mButton! = Null) {mButton.setText (telefon);} –

1

swój mButton jest null.so NPE.are ty refrenced zasobów xml po setContentView

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

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

} 
1

zmiany kodu jako:

@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: Twoje \ res \ layout \ głównych. xml wygląda jak:

<?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

problem polega na tym, że nie został załadowany z widoku zawartości jego przycisk w zawyżonym widoku, który mam napompowany po Asynctask –

+0

@LukeBatley: jako że twoje pytanie dostaje prawidłowe odpowiedzi.Jeśli problem nie został rozwiązany, opublikuj więcej kodu i pełne wyjaśnić problem –

+0

@LukeBatley: użyj 'LayoutInflater inflater = (LayoutInflater) context.getSystemService (LAYOUT_INFLATER_SERVICE); Wyświetl ClubInfo = inflater.inflate (R.layout.clubinfocell, null); 'zamiast' ClubInfo = LayoutInflater.z (getBaseContext()). inflate (R.layout.clubinfocell, null); ' –

0

sprawdź pliki R.java mport oświadczenie

jesteś pewien, że masz importować projektu użyć .. i po prostu sformatować układ (.xml) plik i zapisać go ponownie wpisz to samo oświadczenie

Powiązane problemy