2013-11-25 17 views
1

我使用自定义对话框从我的customdialog.xml包含一个tableLayout填充row.xml。通常这段代码在一个活动类上工作,但作为一个对话框,当我添加一个tableLayout并插入一行时,应用程序崩溃。如何达到它?android tableLayout自定义对话框

代码:

private void customDialog(){ 

     // custom dialog 
        final Dialog dialog = new Dialog(context); 
        dialog.setContentView(R.layout.customdialog); 


        TableRow row = (TableRow)LayoutInflater.from(this).inflate(R.layout.row, null); 

        ((TextView)row.findViewById(R.id.textNom)).setText("testing..."); 

        TableLayout llistaLlistes = (TableLayout)this.findViewById(R.id.llistaLlistes); 

        llistaLlistes.addView(row); 

        Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK); 

        dialogButton.setOnClickListener(new OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          dialog.dismiss(); 
         } 
        }); 

        dialog.show(); 

    } 

崩溃日志:

11-25 18:39:57.509: E/AndroidRuntime(27839): FATAL EXCEPTION: main 
11-25 18:39:57.509: E/AndroidRuntime(27839): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.appdev.stpro/com.appdev.stpro.StPROActivity}: java.lang.NullPointerException 
11-25 18:39:57.509: E/AndroidRuntime(27839): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at android.app.ActivityThread.access$600(ActivityThread.java:127) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at android.os.Looper.loop(Looper.java:137) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at android.app.ActivityThread.main(ActivityThread.java:4441) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at java.lang.reflect.Method.invokeNative(Native Method) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at java.lang.reflect.Method.invoke(Method.java:511) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at dalvik.system.NativeStart.main(Native Method) 
11-25 18:39:57.509: E/AndroidRuntime(27839): Caused by: java.lang.NullPointerException 
11-25 18:39:57.509: E/AndroidRuntime(27839): at com.appdev.stpro.StPROActivity.customDialog(StockPROActivity.java:236) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at com.appdev.stpro.StPROActivity.onCreate(StockPROActivity.java:212) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at android.app.Activity.performCreate(Activity.java:4465) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
11-25 18:39:57.509: E/AndroidRuntime(27839): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931) 

如果布局是必要的,请让我知道。

回答

2

你可以随时去其他地方

为你的tablelayout创建一个类和xml。 然后在Android清单添加此上的活动:

android:theme="@android:style/Theme.Dialog" 

现在只是拿到onclicklistener开始活动,而不是对话!

+0

嗯肯定!我喜欢这个选项。然后你可以处理结果调用startActivityForResult()。这是完全灵活的。谢谢! – Jaume

+0

不客气!很高兴我能帮上忙 –

1

当我试图通过编程将相应的行添加到数据表中时,出现了一些问题。

我设法做到了在循环而不是表格中创建水平线性布局。