Android Tutorials - Herong's Tutorial Examples - v3.05, by Herong Yang
Java Exceptions in AndroidRuntime Error Log
This section provides a tutorial on how use the 'adb logcat' command to retrieve Java exceptions from the AndroidRuntime error log entries.
In order to see what will happen if an Android application runs into a problem, I wrote another new application called "AndroidDebug" with this Java code:
/* AndroidDebug.java * Version 1.0 - Set activity content to a child view * Copyright (c) 2015, HerongYang.com, All Rights Reserved. */ package com.herongyang.debug; import android.app.Activity; import android.os.Bundle; import android.widget.LinearLayout; import android.widget.Button; public class AndroidDebug extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Create the layout LinearLayout l = new LinearLayout(this); // Create the left button Button bl = new Button(this); bl.setText("Yes"); l.addView(bl); // Create the right button Button br = new Button(this); br.setText("No"); l.addView(br); // Set the left button as the activity content setContentView(bl); } }
Build the new application project and install it on the emulator.
Go to the emulator and try to launch "AndroidDebug". I see this error message on the screen: "Unfortunately, AndroidDebug has stopped".
The application crashed. But don't worry. We can use the "adb logcat" command to find out more information about the crash.
C:\herong\AndroidDebug>\local\android-sdk-windows\platform-tools\adb \ logcat -b crash AndroidRuntime:E *:S ... E/AndroidRuntime( 812): FATAL EXCEPTION: main E/AndroidRuntime( 812): java.lang.RuntimeException: Unable to start \ activity ComponentInfo{com.herongyang.debug \ /com.herongyang.debug.AndroidDebug}: \ java.lang.IllegalStateException: The specified child already has \ a parent. You must call removeView() on the child's parent first. E/AndroidRuntime( 812): at android.app.ActivityThread.performL... E/AndroidRuntime( 812): at android.app.ActivityThread.handleLa... E/AndroidRuntime( 812): at android.app.ActivityThread.access$6... E/AndroidRuntime( 812): at android.app.ActivityThread$H.handle... E/AndroidRuntime( 812): at android.os.Handler.dispatchMessage(... E/AndroidRuntime( 812): at android.os.Looper.loop(Looper.java:... E/AndroidRuntime( 812): at android.app.ActivityThread.main(Act... E/AndroidRuntime( 812): at java.lang.reflect.Method.invokeNati... E/AndroidRuntime( 812): at java.lang.reflect.Method.invoke(Met... E/AndroidRuntime( 812): at com.android.internal.os.ZygoteInit$... E/AndroidRuntime( 812): at com.android.internal.os.ZygoteInit.... E/AndroidRuntime( 812): at dalvik.system.NativeStart.main(Nati... E/AndroidRuntime( 812): Caused by: java.lang.IllegalStateException: \ The specified child already has a parent. You must call \ removeView() on the child's parent first. E/AndroidRuntime( 812): at android.view.ViewGroup.addViewInner... E/AndroidRuntime( 812): at android.view.ViewGroup.addView(View... E/AndroidRuntime( 812): at android.view.ViewGroup.addView(View... E/AndroidRuntime( 812): at com.android.internal.policy.impl.Ph... E/AndroidRuntime( 812): at com.android.internal.policy.impl.Ph... E/AndroidRuntime( 812): at android.app.Activity.setContentView \ (Activity.java:1855) ... E/AndroidRuntime( 812): at com.herongyang.debug.AndroidDebug.\ onCreate(AndroidDebug.java:30) ... E/AndroidRuntime( 812): at android.app.Activity.performCreate(... E/AndroidRuntime( 812): at android.app.Instrumentation.callAct... E/AndroidRuntime( 812): at android.app.ActivityThread.performL... E/AndroidRuntime( 812): ... 11 more ...
Do you see what is the cause of the problem? The statement, "setContentView(bl);" is trying to set View object "bl" as the Activity content view. But it already have a parent view, the layout "l".
Fixing the problem is easy. I will leave it you.
By the way, on Android 4.0.3, the AndroidRuntime log is in the "main" buffer. You need to run the following command to see the RuntimeException:
C:\herong\AndroidDebug>\local\android-sdk-windows\platform-tools\adb \ logcat -b main AndroidRuntime:E *:S
Table of Contents
Installing JDK 1.8 on Windows System
Installation of Android SDK R24 and Emulator
Installing Apache Ant 1.9 on Windows System
Developing First Android Application - HelloAndroid
Android Application Package (APK) Files
Android Debug Bridge (adb) Tool
AboutAndroid - Application to Retrieve System Information
android.app.Activity Class and Activity Lifecycle
View Objects and Layout Resource Files
►Using "adb logcat" Command for Debugging
"adb logcat" Command - Displaying System Logs
"adb logcat" Command Options and Log Buffers
"adb logcat -v" Command - Log Format Control
"adb logcat" Command Arguments - Output Filters
Using "adb logcat" Command to Track the Lifecycle of an Application
►Java Exceptions in AndroidRuntime Error Log
Build Process and Package File Content
Samsung Galaxy Tab 3 Mini Tablet
USB Debugging Applications on Samsung Tablet
USB Debugging Applications on LG-V905R Tablet