How to fix ArithmeticException error in android

In fact, I do not know where the problem is. I think it should be when creating a TableLayout. I do not know how to fix the error and make the application work. In this program, the error "java.lang.ArithmeticException: division by zero" is displayed. The program has an EditText (edText) that requests input from the user. Its type is NUMBER (here r is the value from edText) Below EditText there is a button (bt) that displays the value of edText. Below the (bt) button, there is another button (bt1) that displays the edText value again. This button should also display r rows and 4 columns of EditText views. Ie, the user must enter r * 4 input into the EditText. I cannot clear the error, and I do not know how to clear this error.

public class Ybus_Activity extends Activity { int i; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ybus); final LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); final LinearLayout main = (LinearLayout)findViewById(R.id.android_main_layout); TextView getData=new TextView(this); getData.setText("Enter the number of LineData : "); getData.setId(5); getData.setLayoutParams(params); main.addView(getData); final EditText edText = new EditText(this); edText.setId(3); edText.setLayoutParams(params); edText.setWidth(100); edText.setImeOptions(EditorInfo.IME_ACTION_NEXT); edText.setInputType(InputType.TYPE_CLASS_NUMBER); edText.setKeyListener(DigitsKeyListener.getInstance()); edText.setMaxLines(1); main.addView(edText ); Button bt = new Button(this); bt.setText("Click to enter Linedata"); bt.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); main.addView(bt); final TextView text = new TextView(this); bt.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String ed=edText.getText().toString(); try{ i =Integer.parseInt(ed); //setting value here text.setText(i+""); //or you can do like this //text.setText(String.valueOf(i)); }catch(NumberFormatException ex){ text.setText("Value at TextView is not a valid integer"); } } }); main.addView(text); final TextView text2 = new TextView(this); Button two = new Button(this); two.setText("Second"); main.addView(two); main.addView(text2); two.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { text2.setText(String.valueOf(i)); main.addView(createTL(i,getBaseContext())); System.out.println(+i); } }); } public static TableLayout createTL(int r, Context context) { int c=4; LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT); TableLayout tl = new TableLayout(context); tl.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT)); tl.setStretchAllColumns(true); TableRow[] tr = new TableRow[r]; EditText[][] et = new EditText[r][c]; for(int i=0;i<r;i++) { System.out.println("line i called" + i); tr[i] = new TableRow(context); for(int j=0;j<4;j++) { et[i][j] = new EditText(context); et[i][j].setText("o.oo"); et[i][j].setLayoutParams(params); et[i][j].setWidth(100); et[i][j].setImeOptions(EditorInfo.IME_ACTION_NEXT); et[i][j].setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL); et[i][j].setKeyListener(DigitsKeyListener.getInstance()); et[i][j].setMaxLines(1); System.out.println("EditText is created" + i + j); tr[i].addView(et[i][j]); System.out.println("Tr is created" + i); } tl.addView(tr[i]); System.out.println("TLL is created" + i); } return tl; } } 

My logcat:

 02-23 12:56:36.147: I/System.out(1742): line i called0 02-23 12:56:36.155: I/System.out(1742): EditText is created00 02-23 12:56:36.155: I/System.out(1742): Tr is created0 02-23 12:56:36.186: I/System.out(1742): EditText is created01 02-23 12:56:36.186: I/System.out(1742): Tr is created0 02-23 12:56:36.195: I/System.out(1742): EditText is created02 02-23 12:56:36.206: I/System.out(1742): Tr is created0 02-23 12:56:36.206: I/System.out(1742): EditText is created03 02-23 12:56:36.215: I/System.out(1742): Tr is created0 02-23 12:56:36.225: I/System.out(1742): TLL is created0 02-23 12:56:36.225: I/System.out(1742): line i called1 02-23 12:56:36.235: I/System.out(1742): EditText is created10 02-23 12:56:36.235: I/System.out(1742): Tr is created1 02-23 12:56:36.245: I/System.out(1742): EditText is created11 02-23 12:56:36.245: I/System.out(1742): Tr is created1 02-23 12:56:36.265: I/System.out(1742): EditText is created12 02-23 12:56:36.265: I/System.out(1742): Tr is created1 02-23 12:56:36.275: I/System.out(1742): EditText is created13 02-23 12:56:36.275: I/System.out(1742): Tr is created1 02-23 12:56:36.275: I/System.out(1742): TLL is created1 02-23 12:56:36.285: I/System.out(1742): 2 02-23 12:56:36.285: D/AndroidRuntime(1742): Shutting down VM 02-23 12:56:36.285: W/dalvikvm(1742): threadid=1: thread exiting with uncaught exception (group=0xb2f97288) 02-23 12:56:36.305: E/AndroidRuntime(1742): FATAL EXCEPTION: main 02-23 12:56:36.305: E/AndroidRuntime(1742): java.lang.ArithmeticException: divide by zero 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.widget.TableLayout.mutateColumnsWidth(TableLayout.java:583) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.widget.TableLayout.shrinkAndStretchColumns(TableLayout.java:572) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.widget.TableLayout.measureVertical(TableLayout.java:470) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.widget.TableLayout.onMeasure(TableLayout.java:435) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.View.measure(View.java:15172) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.widget.LinearLayout.measureVertical(LinearLayout.java:681) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.widget.LinearLayout.onMeasure(LinearLayout.java:574) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.View.measure(View.java:15172) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.View.measure(View.java:15172) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.widget.LinearLayout.measureVertical(LinearLayout.java:833) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.widget.LinearLayout.onMeasure(LinearLayout.java:574) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.View.measure(View.java:15172) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 02-23 12:56:36.305: E/AndroidRuntime(1742): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2148) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.View.measure(View.java:15172) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1848) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1100) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1273) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.Choreographer.doCallbacks(Choreographer.java:555) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.Choreographer.doFrame(Choreographer.java:525) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.os.Handler.handleCallback(Handler.java:615) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.os.Handler.dispatchMessage(Handler.java:92) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.os.Looper.loop(Looper.java:137) 02-23 12:56:36.305: E/AndroidRuntime(1742): at android.app.ActivityThread.main(ActivityThread.java:4745) 02-23 12:56:36.305: E/AndroidRuntime(1742): at java.lang.reflect.Method.invokeNative(Native Method) 02-23 12:56:36.305: E/AndroidRuntime(1742): at java.lang.reflect.Method.invoke(Method.java:511) 02-23 12:56:36.305: E/AndroidRuntime(1742): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 02-23 12:56:36.305: E/AndroidRuntime(1742): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 02-23 12:56:36.305: E/AndroidRuntime(1742): at dalvik.system.NativeStart.main(Native Method) 02-23 12:56:36.425: D/dalvikvm(1742): GC_CONCURRENT freed 162K, 3% free 11001K/11271K, paused 24ms+27ms, total 107ms 
+1
source share
2 answers

This line of code causes an error. I understood this after link to link

 int c=4; LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT); //this is causing the error tl.setStretchAllColumns(true); 

You need to change it to

 TableRow.LayoutParams params = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT); 
+4
source

It should do something related to the setStretchAllColumns settings and the width, due to which there is some internal android calculation that leads to an exception. Just check grepcode with a method that throws an exception and you will get a better idea.

0
source

All Articles