Android: приложение принудительно закрывается, как только оно открывается - PullRequest
5 голосов
/ 25 октября 2009

Я возился с android на Netbeans и сделал простое математическое приложение. Где-то по пути приложение внезапно закрывается принудительно, как только оно открывается (на эмуляторе) ... Я пытался прокомментировать весь код в классе, который содержит основное действие, но безрезультатно. Поскольку это не дает мне конкретного сообщения об ошибке, я чувствую себя потерянным.

Любая причина, почему это происходит?

Вот файл макета в соответствии с запросом:

<?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

Ответы [ 6 ]

4 голосов
/ 25 октября 2009

Это на телефоне или в эмуляторе? Первое место, которое я посмотрю, в журналах. В Eclipse перейдите в «Окно»> «Показать представление»> «Другое»> «Android»> «LogCat».

Вы можете добавить свои собственные сообщения журнала отладки в коде

Log.d("Debug", "Informative Log Message.");

Также было бы полезно, если бы вы могли опубликовать свой код здесь. Опубликуйте пример минимального рабочего кода, который демонстрирует ошибочное поведение.

3 голосов
/ 29 октября 2009

Я выяснил, в чем проблема, в основном задании я устанавливал объекты Edittext и TextView с объектами в классе R, прежде чем устанавливать contentView. Извините за беспокойство.

2 голосов
/ 27 октября 2009

попробуйте запустить
adb logcat
ADB находится в каталоге инструментов в Android SDK, он показывает вам исключения во время загрузки приложения, вещи, которые не могут быть перехвачены.

2 голосов
/ 25 октября 2009

Обычно это происходит со мной, когда я путаю файл макета. Попробуйте открыть основной файл макета в Eclipse и посмотрите, сможет ли он по-прежнему отображать его. Если это невозможно, это может стать причиной ваших неприятностей. Разместите здесь, если хотите, возможно, мы можем вам помочь.

0 голосов
/ 11 мая 2012

Довольно хороший способ сделать это - просто добавить обычный текст редактирования и затем добавить:

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

к нему Затем просто установите текст редактируемого текста в своем классе, и вам будет хорошо.

0 голосов
/ 29 октября 2009

Вы создали файл strings.xml в своей папке res / values? Вам необходимо объявить строки, которые вы используете:

<?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 для создания макетов, которые должны помочь вам избежать проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...