2011-09-27 7 views
1

実行時にボタンの幅を設定したいので、表示幅の50%にします。 私は次のように使用しますが、私は問題を抱えている「何もエミュレータに表示されていない」と、私はこの行をコメントした場合 の.java パブリッククラス実験は活動{実行時にボタンの幅を設定するにはどうすればよいですか?

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     Display display = getWindowManager().getDefaultDisplay(); 
     int width = display.getWidth(); 
     int height = display.getHeight(); 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     Button btn = (Button) findViewById(R.id.btnmarwa); 
     btn.setWidth(width/2);  
     setContentView(R.layout.emailpopup); 
    } 
} 

を拡張する「プロセスは、もう一度試してください。予期せず停止した」と言います btn.setWidth(width);
エラーはなく、レイアウトが表示されるので、.javaファイル内のボタンに新しい幅を設定する場所はどこですか?

答えて

3

は、あなたの質問については、直接ではないですが、あなたはsetContentView()は「findViewByIdメソッドを引き起こした後、この行を配置する必要があります。

枚この方法を試してください。

// TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.emailpopup); 
    Button btn = (Button) findViewById(R.id.btnmarwa); 
    btn.setWidth(width/2);  
+0

おかげで、それが作品:) – Sonnenschein

1

ログの例外が何であるかを述べる必要があります。そのため、クラッシュする理由を理解することができます。

私の推測では、findViewByIdがnullを返すなどbtn.setWidth()はNullPointerExceptionを引き起こしているされているのでBTNは、ヌルであるということです。ビューがまだ膨張されていませんので、あなたは、findViewById後setContentViewを設定しているので、

これはおそらくです。

変更まわりため、あなたはfindViewByIdを呼び出す前にsetContentViewが呼び出されたことを確認すること。

+0

をはい、あなたは大丈夫です:) – Sonnenschein

関連する問題