Android Программно задающий текст кнопки
Кто-нибудь знает, как программно установить текст кнопки?
вещь: я не вызываю это из основного макета (setContentView), я вызываю его в виде, которое накачивается после асинтезы
heres, что я пробовал, но это дает исключение нулевого указателя во второй строке
Button mButton=(Button)findViewById(R.id.contact);
mButton.setText("number");
heres my layout, где я вызываю кнопку
<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);
Ответы
Ответ 1
Затем используйте свой объект просмотра для его инициализации:
Button mButton = (Button)your_view_object.findViewById(R.id.contact);
mButton.setText("number");
При попытке идентифицировать представление, отличное от вашего макета активности, вы должны передать ссылку этого представления, как это. Если Android не будет искать этот элемент из макета, который вы указали в setContentView()
.
Например, подумайте, что вы завысили такое представление:
View View = mInflater.inflate(R.layout.gridelement, null);
Затем используйте этот объект View для кнопки, присутствующей в этом раздутом макете:
Button mButton = (Button)View.findViewById(R.id.contact);
Ответ 2
ваш mButton
- null.so NPE. Вы переопределили ресурсы xml после setContentView
onCreate(){
...
setContentView(R.layout.yourlayout);
Button mButton=(Button)findViewById(R.id.contact);
mButton.setText("number");
}
Ответ 3
измените свой код как:
@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>
Ответ 4
проверить запись импорта файлов R.java
Вы уверены, что у вас есть импорт из проекта, который вы используете.
и просто отформатируйте файл макета (.xml), сохраните его и снова введите тот же оператор