2012-06-22 18 views
10

ボタンのテキストをプログラムで設定する方法を知っている人はいますか?Androidプログラムでボタンのテキストを設定する

私はメインレイアウト(setContentView)からこれを呼び出すことはありません。私はasynctaskの後で膨らんだビューでそれを呼び出しています heres何を試しましたが、これは2行目でnullポインタ例外を与えています

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

私は

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); 
を膨らませるんだ、ここでボタン

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

私の見解を呼び出していますHERESに私のレイアウト

+0

あなたがフルのonCreateメソッドを投稿することができますここに? – Cata

+1

完全なJavaコードファイルをご提供ください。 –

+1

最初の行でmButtonがnullであるため、NPEを返します。これは、findViewByIdが、あなたが提供したR.id.contactを見つけられなかったためです。 –

答えて

20

は、その後にあなたのビューのオブジェクトを使用するのと同じ文を使用するプロジェクト.. のそれをインポートし、それを保存しますレイアウト(の.xml)ファイルをフォーマットしていることをご確認されています

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

私のビューを表示するために自分のコードを編集しました。まだnullポインタ例外が発生しています –

+0

null checkでif(mButton!= null){mButton.setText(telephone);} –

1

あなたmButtonsetContentView

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

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

} 
1
のようにコードを変更

した後は、XMLリソースをrefrenced null.so NPE.areです:

@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 \レイアウト\メイン。 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> 
+0

問題はコンテンツビューからロードされていませんAsynctaskの後に膨らませた膨らんだビュー内のボタンです。 –

+0

@LukeBatley:あなたの質問として、すべての正しい答えが得られています。問題の説明 –

+0

@LukeBatley: 'LayoutInflater inflater =(LayoutInflater)context.getSystemService(LAYOUT_INFLATER_SERVICE);を使用してください。 View ClubInfo = inflater.inflate(R.layout.clubinfocell、null); '' ClubInfo = LayoutInflaterの代わりに ''from(getBaseContext())。inflate(R.layout.clubinfocell、 null); ' –

0

チェックR.javaファイルi mport声明

は、あなたが入力し、再び

関連する問題