【问题标题】:ArithmeticException: Divide by zero with table layout dynamically in AndroidArithmeticException:在 Android 中使用表格布局动态除以零
【发布时间】:2021-03-06 18:27:54
【问题描述】:

我想在运行时以表格布局动态显示 SQLite 数据库的 14 列。我已经尝试了很多,但是当我运行应用程序时它崩溃并且我得到 ArithmeticException: 除以零和 mutateColumnsWidth 错误。

这是我的活动代码:

SQLiteDatabase sqlDatabase = databaseHelper.getWritableDatabase();
Cursor c1 =sqlDatabase.rawQuery(performanceQuery , null);

int rows = c1.getCount();
Log.e("rows "," = " + rows);

int cols = c1.getColumnCount();
Log.e("cols "," = " + cols);

//Cursor c1 =db.rawQuery(query, null);
if (c1 != null && c1.getCount() != 0) 
{  
    Log.e("11111","11111");
    if (c1.moveToFirst())
    {   
        Log.e("222222","222222");
        // outer for loop
        for (int i = 0; i < rows; i++) 
        {
            TableRow row = new TableRow(this);
            row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
                LayoutParams.WRAP_CONTENT));

            // inner for loop
            for (int j = 0; j < cols; j++)
            {
                TextView tv = new TextView(this);
                tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
                tv.setBackgroundResource(R.drawable.cell_shape);
                tv.setGravity(Gravity.CENTER);
                tv.setTextSize(18);
                // tv.setTextColor(010101);
                tv.setPadding(5, 5, 5, 5);
                tv.setText(c1.getString(j));

                String strText = tv.getText().toString().trim();
                System.out.println(" strText " + strText);

                row.addView(tv);
            }
            Log.e("3333333","3333333");
            c1.moveToNext();

            Log.e("4444444","4444444");
            table_layout.addView(row);
        }
    }
    sqlDatabase.close();
    c1.close();
    Log.e("55555555","55555555");
}

这里是 .xml 代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@android:color/white"
    android:padding="5dp" >

   <TableLayout
        android:id="@+id/tableLayout_PerformanceReport"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textTitle"
        android:background="@android:color/white"
        android:padding="10dp"
        android:shrinkColumns="*"
        android:stretchColumns="*" 
        android:scrollbars="vertical|horizontal"
        android:scrollbarAlwaysDrawVerticalTrack="true">
    </TableLayout>

</RelativeLayout>

日志错误信息:

07-11 12:58:05.530: E/AndroidRuntime(1264): FATAL EXCEPTION: main
07-11 12:58:05.530: E/AndroidRuntime(1264): java.lang.ArithmeticException: divide by zero
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.widget.TableLayout.mutateColumnsWidth(TableLayout.java:579)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.widget.TableLayout.shrinkAndStretchColumns(TableLayout.java:568)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.widget.TableLayout.measureVertical(TableLayout.java:466)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.widget.TableLayout.onMeasure(TableLayout.java:431)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.view.View.measure(View.java:8313)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:581)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:365)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.view.View.measure(View.java:8313)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.view.View.measure(View.java:8313)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.view.View.measure(View.java:8313)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.view.ViewRoot.performTraversals(ViewRoot.java:839)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.os.Looper.loop(Looper.java:123)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at android.app.ActivityThread.main(ActivityThread.java:3683)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at java.lang.reflect.Method.invokeNative(Native Method)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at java.lang.reflect.Method.invoke(Method.java:507)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
07-11 12:58:05.530: E/AndroidRuntime(1264):     at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 你能显示第 579 行的内容吗
  • @mapo ,我找不到第 579 行在哪里。
  • 1. cols 和 col 的值不是 0 对吗? TableLayout中关于int extraSpace = totalExtraSpace / count;的第579行
  • @kidnan :是的,col 不是 0。
  • @kidnan:但是表格布局的问题在哪里。

标签: java android xml


【解决方案1】:

试试这个

tv.setLayoutParams(new TableRow.LayoutParams(
    LayoutParams.WRAP_CONTENT,
    LayoutParams.WRAP_CONTENT
));

【讨论】:

    【解决方案2】:

    我遇到了类似的错误,但由于 logcat 的信息量不是很大,所以找不到问题。 就我而言,这与我添加了一个空的 TableRow 的事实有关。

      for (int i = from; i < until; i++) {
                    TableRow row = new TableRow(getApplicationContext());
                    table.addView(row); 
                  //ading views to the table row
                     ....
    
        }
    

    但是,在添加视图之前,另一个异常是阻止视图添加到 TableRow。我解决了这个问题,问题就消失了。

    【讨论】:

      猜你喜欢
      • 2014-05-13
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 2014-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多