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) файл сохраните его и снова введите ту же инструкцию