2014-03-22 7 views
2

Я очень новичок в Android. Это пара строк, добавленных в руководство MyFirstApp, упомянутое в Eclipse ADT. Я просто пытаюсь изменить текст в TextView. Я смущен тем, что уже столько часов и не могу найти решение. Любая помощь приветствуется :-)NullPointerException on TextView setText

MainActivity.Java

public class MainActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     TextView objTV = (TextView)this.findViewById(R.id.tv_id); 
     objTV.setText("test"); 

     if (savedInstanceState == null) { 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.container, new PlaceholderFragment()).commit(); 
     } 
    } 
... 
} 

fragment_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.myfirstapp.MainActivity$PlaceholderFragment" > 

<TextView 
    android:id="@+id/tv_id" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/hello_world" /> 

</RelativeLayout> 

LogCat

03-22 13:44:36.793: E/AndroidRuntime(1710): FATAL EXCEPTION: main 
03-22 13:44:36.793: E/AndroidRuntime(1710): Process: com.example.myfirstapp, PID: 1710 
03-22 13:44:36.793: E/AndroidRuntime(1710): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myfirstapp/com.example.myfirstapp.MainActivity}: java.lang.NullPointerException 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at android.app.ActivityThread.access$800(ActivityThread.java:135) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at android.os.Handler.dispatchMessage(Handler.java:102) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at android.os.Looper.loop(Looper.java:136) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at java.lang.reflect.Method.invoke(Method.java:515) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at dalvik.system.NativeStart.main(Native Method) 
03-22 13:44:36.793: E/AndroidRuntime(1710): Caused by: java.lang.NullPointerException 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at com.example.myfirstapp.MainActivity.onCreate(MainActivity.java:21) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at android.app.Activity.performCreate(Activity.java:5231) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
03-22 13:44:36.793: E/AndroidRuntime(1710):  ... 11 more 
+1

'tv_id' находится в' fragment_main' не в 'activity_main' –

+0

Что такое строка 21? –

ответ

8

TextView в макете fragment_main, но у Вас есть только надутый activity_main с setContentView(). Представление, которое вы пытаетесь найти, не находится в иерархии вида деятельности.

Возможные решения:

  • Подведите TextView в макете деятельности.

  • Переместить код, обращаясь к TextView в фрагмент onCreateView().

+0

Я знал, что это должно быть просто, спасибо – mrAshpool

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