Android以编程方式设置按钮文本

时间:2012-06-22 10:59:27

标签: android button

有人知道如何以编程方式设置按钮的文本吗?

事情是我不是从主布局(setContentView)调用它我在一个asynctask之后膨胀的视图中调用它 继承人我试过但这是在第二行给出一个空指针异常

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 个答案:

答案 0 :(得分:27)

然后使用视图的对象初始化它:

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

当您尝试识别Activity的布局以外的视图时,您必须像这样传递该视图的引用。如果不是,Android会继续从您在setContentView()中提供的布局中查找此元素。

例如,假设您已经夸大了这样的视图:

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

然后将此View的对象用于该膨胀布局中的Button:

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

答案 1 :(得分:2)

将您的代码更改为:

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

修改 您的\ 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>

答案 2 :(得分:1)

您的mButton为null.so NPE。您是否在setContentView

后重新考虑了xml资源
onCreate(){
...
setContentView(R.layout.yourlayout);

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

}

答案 3 :(得分:0)

检查R.java文件导入语句

您确定要导入您使用的项目吗? 只需格式化您的布局(.xml)文件保存它,然后再次键入相同的语句