2011-11-14 20 views
0

私はいくつかのボタンを示すカスタムダイアログを持っています。考え方はスクロール可能なDialogで、0〜9、0〜F、0〜Zの数字や文字を選択できます。ダイアログ内のボタンの問題

私の最初の問題は、これらのボタンをコードと毎回可変数のボタンがあるのでxmlではない。私にとっては最も単純なコードですらクラッシュするので、私はおそらく何か正しいことをしていないでしょう。

また、ボタンをクリックしたときに、いくつかのxmlボタンを使用してコードをクリックすると、onClick関数が見つからないというコードが表示されます。あなたが見ることができるように、私はアンドロイドを持っています:onClick = "onClickDialogbutton"私のボタンxmlで、関数は私のJavaコードに存在しますが、それでもクラッシュします。

誰かがコードを見て、プログラムでボタンを追加し、onClickを動作させることができますか?ここで

が私のコードです:

DialogTestActivity.java:

package com.test.dialog; 
import android.app.Activity; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.widget.Button; 
import android.widget.LinearLayout; 
public class DialogTestActivity extends Activity { 
    Dialog dialog; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
    public void onClickStartDialog(View view) { 
     dialog = new Dialog(this); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setContentView(R.layout.dialog); 
     dialog.setCancelable(true); 
     dialog.show(); 
     // I here wish to add buttons through code and not xml. 
     // This gives an error as it is now. 
     Button button = new Button(this); 
     ((LinearLayout)findViewById(R.id.Buttons)).addView(button); 
    } 
    public void onClickDialogButton(View view) { 
     dialog.dismiss(); 
    } 
} 

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:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:onClick="onClickStartDialog" 
     android:text="Start Dialog" /> 
</LinearLayout> 

Dialog.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="54dip" 
    android:layout_height="150dip" 
    android:gravity="center" > 
    <ScrollView 
     android:layout_width="48dip" 
     android:layout_height="144dip" > 
     <LinearLayout 
      android:id="@+id/Buttons" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" > 
      <Button 
       android:id="@+id/ButtonId0" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_horizontal" 
       android:onClick="onClickDialogbutton" 
       android:text="0" 
       android:textSize="32dip" /> 
      <Button 
       android:id="@+id/ButtonId1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_horizontal" 
       android:onClick="onClickDialogbutton" 
       android:text="1" 
       android:textSize="32dip" /> 
      <Button 
       android:id="@+id/ButtonId2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_horizontal" 
       android:onClick="onClickDialogbutton" 
       android:text="2" 
       android:textSize="32dip" /> 
      </LinearLayout> 
    </ScrollView> 
</RelativeLayout> 
+0

クラッシュが発生したときにlogcatから取得した例外スタックトレースを投稿してください – Craigy

答えて

1

あなたはおそらくする必要があり電話の3210 Activityの中にfindViewByIdを呼び出すだけで、現在指定されたIDを持つアクティビティに表示されているビューまたは子ビューを検索しようとします。この場合、おそらくnullが返されているため、クラッシュします。再度試してくださいdialog.findViewById...

関連する問題