18

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

事情是我没有从主布局(setContentView)调用它我在一个异步任务之后膨胀的视图中调用它这是我尝试过的但是这在第二行给出了一个空指针异常

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

4 回答 4

31

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

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

当您尝试识别除 Activity 布局之外的视图时,您必须像这样传递该视图的引用。如果不是,Android 将继续从您在setContentView().

例如,假设您已经膨胀了这样的视图:

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

然后将此视图的对象用于该膨胀布局中存在的按钮:

  Button mButton = (Button)View.findViewById(R.id.contact);
于 2012-06-22T11:14:56.443 回答
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>
于 2012-06-22T11:04:31.433 回答
1

mButton是 null.so NPE.are you refrenced xml resources aftersetContentView

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

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

}
于 2012-06-22T11:01:39.690 回答
0

检查 R.java 文件导入语句

你确定你已经导入了你使用的项目吗.. 并且只是格式化你的布局(.xml)文件保存它并再次输入相同的语句

于 2012-06-22T11:04:49.980 回答