Ошибка принудительного закрытия в приложении Android

Я добавил класс Results в манифест Android, так что да, вы можете вычеркнуть его из списка. Является ли это ошибкой в ​​том, как я изложил метод?

    package com.kenning.foreveralone;


    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.EditText;
    import android.widget.TextView;

    public class Results extends Activity{

        EditText fbFriends;
        TextView resulting;
        String value;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.rslt);
            TextView resulting = (TextView) findViewById(R.id.result);
            EditText fbFriends = (EditText) findViewById(R.id.noFacebookFriends);
            String value = fbFriends.getText().toString();
            resulting.setText("Your score is " + value);
        }



    }

Когда я запускаю этот класс, кажется, что он всегда принудительно закрывает мое приложение. Может ли кто-нибудь сказать мне, что я делаю неправильно?

Вот лог кота:

04-08 20:05:24.169: E/AndroidRuntime(589): FATAL EXCEPTION: main
04-08 20:05:24.169: E/AndroidRuntime(589): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kenning.foreveralone/com.kenning.foreveralone.Results}: java.lang.NullPointerException
04-08 20:05:24.169: E/AndroidRuntime(589):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
04-08 20:05:24.169: E/AndroidRuntime(589):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-08 20:05:24.169: E/AndroidRuntime(589):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-08 20:05:24.169: E/AndroidRuntime(589):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-08 20:05:24.169: E/AndroidRuntime(589):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-08 20:05:24.169: E/AndroidRuntime(589):  at android.os.Looper.loop(Looper.java:123)
04-08 20:05:24.169: E/AndroidRuntime(589):  at android.app.ActivityThread.main(ActivityThread.java:4627)
04-08 20:05:24.169: E/AndroidRuntime(589):  at java.lang.reflect.Method.invokeNative(Native Method)
04-08 20:05:24.169: E/AndroidRuntime(589):  at java.lang.reflect.Method.invoke(Method.java:521)
04-08 20:05:24.169: E/AndroidRuntime(589):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-08 20:05:24.169: E/AndroidRuntime(589):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-08 20:05:24.169: E/AndroidRuntime(589):  at dalvik.system.NativeStart.main(Native Method)
04-08 20:05:24.169: E/AndroidRuntime(589): Caused by: java.lang.NullPointerException
04-08 20:05:24.169: E/AndroidRuntime(589):  at com.kenning.foreveralone.Results.onCreate(Results.java:20)
04-08 20:05:24.169: E/AndroidRuntime(589):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-08 20:05:24.169: E/AndroidRuntime(589):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
04-08 20:05:24.169: E/AndroidRuntime(589):  ... 11 more

person MPKenning    schedule 08.04.2012    source источник
comment
ты уверен что есть в элементе с id=результат в файле макета rslt.xml?   -  person coder    schedule 08.04.2012
comment
да, но TextEdit находится в ДРУГОМ xml.   -  person MPKenning    schedule 08.04.2012
comment
Почему ваш импорт не имеет имени вашего пакета.R;   -  person Its not blank    schedule 09.04.2012


Ответы (2)


Это исключение нулевого указателя в onCreate, так почему бы не попробовать пройтись по onCreate, чтобы увидеть, какая переменная имеет значение null?

Тем не менее, я предполагаю, что R.id.noFacebookFriends не является частью R.layout.rslt.

person Paul-Jan    schedule 08.04.2012
comment
Нет, это не так. R.id.noFacebookFriends — это EditText из ДРУГОГО класса. - person MPKenning; 08.04.2012
comment
В чем именно тогда проблема. Вы пытаетесь найти его в R.layout.rslt в приведенном выше коде, используя findViewById. Это вернет ноль. Вызов null.getText() даст NPE, который вы испытываете. - person Paul-Jan; 08.04.2012
comment
Итак, могу ли я сделать этот класс подклассом класса с полем EditText, чтобы я мог получить значение и НЕ получить исключение нулевого указателя? - person MPKenning; 08.04.2012
comment
Поместите значение из edittext в переменную, которую вы сможете использовать позже. - person Barak; 09.04.2012

Вы получаете NullPointerException где-то в своем OnCreate. Я предполагаю, что либо идентификаторы неверны в вашем макете rslt.xml, поэтому результат и fbFriends имеют значение null, либо в fbFriends нет текста, поэтому getText() возвращает null.

person SeanPONeil    schedule 08.04.2012
comment
Ну, fbFriends должен иметь значение, ранее введенное пользователем приложения. Поле EditText расположено в другом файле макета xml с именем frstq.xml. - person MPKenning; 08.04.2012
comment
Порядок идет Главная›frstq›scndq›thrdq›frthq›ffthq›sxthq›rslt rslt содержит результат frstq. frstq имеет EditText и значение вводится пользователем. Затем они проходят через другие классы, и цель rslt состоит в том, чтобы извлечь эти данные и распечатать их. - person MPKenning; 08.04.2012
comment
findViewById вернет только представление, которое находится в расширенном представлении текущего действия. Вам нужно передать значение EditText через намерение, которое запускает это действие. - person SeanPONeil; 08.04.2012
comment
Ах я вижу. Но как мне это сделать, если класс находится примерно в 5 классах от класса, который печатает результат? - person MPKenning; 08.04.2012