findViewById возвращает ошибку - PullRequest
0 голосов
/ 04 октября 2011

findViewById выдает ошибку, я думаю, это потому, что он возвращает ноль.Мое приложение закрывается.

SensorManager sensorManager=null;

TextView x= null;
TextView y= null;
TextView z= null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    setContentView(R.layout.main);
    x= (TextView) findViewById(R.id.tv1);
    y= (TextView) findViewById(R.id.tv2);
    z= (TextView) findViewById(R.id.tv3);
}

XML:

<TextView
    android:id="@+id/tv1"
    android:layout_x="10px"
    android:layout_y="550px"
    android:text="@string/x"
    />  
<TextView
    android:id="@+id/tv2"
    android:layout_x="100px"
    android:layout_y="550px"
    android:text="@string/y"
    />  
<TextView
    android:id="@+id/tv3"
    android:layout_x="200px"
    android:layout_y="550px"
    android:text="@string/z"
    />

Может кто-нибудь сказать мне, что я делаю не так?

решено!

Я использовал XML, данный Санни внизу!Спасибо всем!

Ответы [ 5 ]

2 голосов
/ 04 октября 2011

Это просто .... ТВ * не в вашем макете!

Пожалуйста, опубликуйте макет, я уверен на 100%:

<TextView android:id="@+id/tv1"/>
<TextView android:id="@+id/tv2"/>
<TextView android:id="@+id/tv3"/>

Пожалуйста, также узнайте, как получить LogCat, прежде чем идти дальше в разработке Android! ; -)

Окно -> Показать представление -> Logcat

0 голосов
/ 04 октября 2011

Причина, по которой это происходит:

findViewById() будет искать TextViews в иерархии View, установленной setContentView(R.layout.main). Так что если TextViews не находятся в main.xml, вы получите null

0 голосов
/ 04 октября 2011

да, что проблема, и если с xml не сделано, то вы импортируете android.R;так что он выдаст ошибку, если xml вы удалите и импортируете PACKAGENAME.R;

0 голосов
/ 04 октября 2011

Да, код выше работает нормально, и XML-файл должен выглядеть следующим образом.

 <?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/tv1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"></TextView>
 <TextView 
  android:id="@+id/tv2"
  android:layout_width="wrap_content"
   android:layout_height="wrap_content"></TextView>
  <TextView>
 android:id="@+id/tv3"
 android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
 </LinearLayout>
0 голосов
/ 04 октября 2011

Первый: Убедитесь, что ваши TextView присутствуют в вашем макете: main.xml:

<TextView android:id="@+id/tv1" .../>
<TextView android:id="@+id/tv2" .../>
<TextView android:id="@+id/tv3" .../>

Второй: Перестройте свой проект, выполнив следующие действия.шаги: Project ==> Очистить ==> Выберите ваш проект и нажмите OK.

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