Android программно установка текста кнопки

кто-нибудь знает, как программно задать текст кнопки?

дело в том, что я не вызываю это из основного макета (setContentView), я вызываю его в представлении, которое раздувается после asynctask вот что я пробовал, но это дает исключение нулевого указателя на 2-й строке

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

вот мой макет, где я вызываю кнопку

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

вот мой взгляд я надуваю

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);

4 ответов


затем используйте объект вашего представления для его инициализации:

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

когда вы пытаетесь определить представление, отличное от макета вашей деятельности, вы должны передать ссылку на это представление следующим образом. Если не Android будет продолжать искать этот элемент из макета, который вы предоставили в setContentView().

например, рассмотрим, что вы раздули представление, как это:

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

затем используйте объект этого представления для кнопки, присутствующей в этом надутом макет:

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

код mButton равно null.Итак, NPE.вы refrenced xml-ресурсы после setContentView

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

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

}

изменить ваш код:

@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: Ваш \res\layout\main.xml выглядит как:

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

проверить R.java инструкция импорта файлов

вы уверены, что импортировали его из проекта, который вы используете .. и просто отформатируйте макет (.xml) файл сохраните его и снова введите ту же инструкцию