【问题标题】:Android: Application force closing as soon as it opensAndroid:应用程序一打开就关闭
【发布时间】:2009-10-25 17:40:53
【问题描述】:

我正在对 Netbeans 上的 android 进行修补,并做了一个简单的数学应用程序。在应用程序打开时突然强制关闭的某个地方(在模拟器上)......我尝试评论承载主要活动的类中的所有代码,但无济于事。由于它没有给我一个具体的错误信息,我感到有点失落。

发生这种情况的任何原因?

这是所要求的布局文件:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView  android:id="@+id/result"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text=""/>
        <LinearLayout android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/number" />
        <EditText android:id="@+id/n"
          android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
                        android:numeric="decimal"/>
                <Button android:id="@+id/calc"
                  android:text="@string/calculate"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />
    </LinearLayout>
</LinearLayout>

按照建议,我检查了 logcat,这是错误列表

E/AndroidRuntime(  881): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime(  881): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{org.me.mathdroid/org.me.mathdroid.MainActivity}: java.lang.NullPointerException
E/AndroidRuntime(  881):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2324)
E/AndroidRuntime(  881):        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
E/AndroidRuntime(  881):        at android.app.ActivityThread.access$2100(ActivityThread.java:116)
E/AndroidRuntime(  881):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
E/AndroidRuntime(  881):        at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  881):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  881):        at android.app.ActivityThread.main(ActivityThread.java:4203)
E/AndroidRuntime(  881):        at java.lang.reflect.Method.invokeNative(NativeMethod)
E/AndroidRuntime(  881):        at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  881):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
E/AndroidRuntime(  881):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
E/AndroidRuntime(  881):        at dalvik.system.NativeStart.main(Native Method)

E/AndroidRuntime(  881): Caused by: java.lang.NullPointerException
E/AndroidRuntime(  881):        at android.app.Activity.findViewById(Activity.java:1610)
E/AndroidRuntime(  881):        at org.me.mathdroid.MainActivity.<init>(MainActivity.java:22)
E/AndroidRuntime(  881):        at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime(  881):        at java.lang.Class.newInstance(Class.java:1472)
E/AndroidRuntime(  881):        at android.app.Instrumentation.newActivity(Instrumentation.java:1097)
E/AndroidRuntime(  881):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2316)
E/AndroidRuntime(  881):        ... 11 more

【问题讨论】:

  • 您的内部 似乎没有关闭。尝试将 extre 添加到 XML 文件的末尾。另外,第五行后面多了一个"。
  • 删除了引号,而结束标记只是没有被选为 SO 编辑器中的代码。
  • 发布异常的堆栈跟踪将有很大帮助。或者,如果不可能,“onCreate”块可能包含一些答案。
  • 您绝对应该发布 MainActivity.java 源代码。任何你调用 findViewById 的地方。

标签: android


【解决方案1】:

这是在手机上还是在模拟器中?我首先要看的是日志。在 Eclipse 中,转到 Window > Show View > Other... > Android > LogCat。

您可以通过

在代码中添加自己的调试日志消息
Log.d("Debug", "Informative Log Message.");

如果您可以在此处发布代码也会很有帮助。发布显示错误行为的最小工作代码示例。

【讨论】:

  • 事情是我评论了主要活动的所有代码..所以我的代码都没有运行..我假设字符串或布局文件有问题
【解决方案2】:

我已经弄清楚问题出在哪里,在主要活动中,我在设置 contentView 之前使用 R 类中的对象设置了 Edittext 和 TextView 对象。给您添麻烦了。

【讨论】:

  • 我遇到了类似的问题,你能把工作代码贴在这里吗?我不太明白你的意思。
【解决方案3】:

当我弄乱布局文件时,通常会发生这种情况。尝试在 Eclipse 中打开主布局文件,看看它是否仍然可以呈现它。如果它不能,那可能是你麻烦的原因。如果您愿意,请在此处发布,也许我们可以帮助您。

【讨论】:

    【解决方案4】:

    尝试运行
    adb logcat
    adb 位于 android sdk 的 tools 目录中,它向您显示应用程序加载期间的异常,无法捕获的东西。

    【讨论】:

      【解决方案5】:

      您是否在 res/values 文件夹中创建了 strings.xml 文件?您需要声明您正在使用的字符串:

      <?xml version="1.0" encoding="utf-8"?>
      <resources>
          <string name="app_name">Test App</string>
          <string name="number">Number</string>
          <string name="calculate">Calculate</string>
      </resources>
      

      我会推荐使用 Eclipse 而不是 Netbeans。然后你可以使用 ADT 插件来创建你的布局,这应该可以帮助你避免问题。

      【讨论】:

        【解决方案6】:

        一个相当不错的方法是简单地添加一个普通的编辑文本,然后添加:

                android:background="@null"
                android:editable="false"
                android:cursorVisible="false"
        

        给它 然后只需在你的类中设置编辑文本的文本,你就可以开始了。

        【讨论】:

          猜你喜欢
          • 2017-05-14
          • 1970-01-01
          • 1970-01-01
          • 2014-09-08
          • 1970-01-01
          • 1970-01-01
          • 2013-11-24
          • 2017-06-30
          • 1970-01-01
          相关资源
          最近更新 更多