NullPointerException: когда установлено значение TextView - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть файл макета (layout/my_test.xml):

<TextView
      android:id="@+id/my_title"
      android:gravity="left|center_vertical"
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      />

Моя активность:

import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.TextView;

public class MyActivity extends FragmentActivity{

    private View myTestView;    
    private TextView actionBarTitle;

    @Override
    protected void onCreate(Bundle arg0) {
       super.onCreate(arg0);

       myTestView = getLayoutInflater().inflate(R.layout.my_test, null);
       myTitle = (TextView) findViewById(R.id.my_title);

       //NullPointerException here !!
       myTitle.setText(getString(R.string.hello));
    }
}

(Яуверен, что проблема не в res/strings.xml, потому что строковый ресурс "привет" был использован в другом месте, и это нормально.)

Почему Я получил NullPointerException когда я устанавливаю TextView содержимое ??

Полная трассировка ошибок:

 Caused by: java.lang.NullPointerException
E/AndroidRuntime(17283):    at com.test.MyActivity.onCreate(MyActivity.java:21)
E/AndroidRuntime(17283):    at com.eficode.card.CardActivity.onCreate(CarActivity.java:29)
E/AndroidRuntime(17283):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(17283):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669)
E/AndroidRuntime(17283):    ... 11 more

Ответы [ 3 ]

4 голосов
/ 13 февраля 2012

создать идентификатор Textview следующим образом myTitle = (TextView) myTestView .findViewById (R.id.my_title) ;

0 голосов
/ 13 февраля 2012

вы можете получить идентификаторы напрямую только для представлений в макете, который объявлен в setcontentView (R.layout.your_layout_id);но когда вы раздуваете какой-то макет, вы должны получить идентификаторы видов в раздутом виде следующим образом: view_id.find .... ();

0 голосов
/ 13 февраля 2012

Вы должны написать свой onCreate правильно, потому что вы не настраиваете ничего для отображения на экране:

@Override
    protected void onCreate(Bundle arg0) {
       super.onCreate(arg0);
       setContentView(R.layout.my_test);

       myTitle = (TextView) findViewById(R.id.my_title);

       myTitle.setText(getString(R.string.hello));
    }
...