2012-04-08 2 views
1

Я добавил класс Results в манифест Android, так что да, вы можете перечеркнуть это из списка. Является ли ошибка в том, как я изложил метод?Ошибка принудительного закрытия приложения 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 
+0

Вы уверены, что в элементе с id = result в файле макета rslt.xml? – coder

+0

Да, но TextEdit находится в РАЗЛИЧНОМ xml. – MiKenning

+0

Почему у вашего импорта нет «имени вашего пакета» .R; –

ответ

0

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

+0

Ну, fbFriends должен иметь значение, ранее введенное пользователем приложения. Поле EditText находится в другом файле макета XML с именем frstq.xml. – MiKenning

+0

Оформить заказ Главная> frstq> scndq> thrdq> frthq> ffthq> sxthq> rslt rslt содержит результат frstq. frstq имеет EditText, и значение вводится пользователем. Затем они проходят через другие классы, и точка rslt заключается в том, чтобы вытащить этот ввод и распечатать его. – MiKenning

+0

findViewById вернет только представление, которое находится в завышенном представлении Текущей активности. Вы должны передать значение EditText через Intent, который запускает это действие. – SeanPONeil

0

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

Это, я думаю, R.id.noFacebookFriends не является частью R.layout.rslt.

+0

Нет, это не так. R.id.noFacebookFriends - это EditText из класса ANOTHER. – MiKenning

+0

Это именно такая проблема. Вы пытаетесь найти его в R.layout.rslt в коде выше, используя findViewById. Это вернет null. Вызов null.getText() даст вам NPE. –

+0

Итак, могу ли я сделать этот класс подклассом класса с полем EditText, чтобы я мог получить значение и НЕ получить исключение нулевого указателя? – MiKenning

Смежные вопросы