#java #android #textview
#java #Android #TextView
Вопрос:
findViewById выдает ошибку, я думаю, это потому, что он возвращает null . Мое приложение принудительно закрывается.
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, указанный Sunny внизу! Спасибо всем!
Комментарии:
1. Являются
tv1
tv2
иtv3
правильно объявлены в основном XML-макете?2.
Help?
<- layout? (также может быть, что вы не объявили это действие в своем манифесте)3. покажите мне вашу ошибку, что показывает logcat, а также ваш XML-макет
4. Я уже добавил 3 TextViews с этими идентификаторами в XML. Извините, но как мне увидеть LogCat?
5. Logcat — это то, что вы должны использовать, прежде чем даже думать о программировании и задавать вопросы. Без этого вы полностью слепы в своем коде. Для отображения: добавить view -> logcat
Ответ №1:
Это просто …. tv * отсутствует в вашем макете!
Пожалуйста, опубликуйте макет, я на 100% уверен, что он не содержит:
<TextView android:id="@ id/tv1"/>
<TextView android:id="@ id/tv2"/>
<TextView android:id="@ id/tv3"/>
Пожалуйста, также узнайте, как получить logcat, прежде чем идти дальше в разработке Android! 😉
Окно -> Показать вид -> logcat
Комментарии:
1. Я должен опубликовать, что я уже добавил XML перед публикацией, я отредактирую его снова. 😀
Ответ №2:
да, приведенный выше код работает нормально, и файл 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>
Комментарии:
1. теперь вы понимаете это, и вы удалили свой пост 🙂 , вы должны разрешить это, чтобы другие могли получать из него информацию 🙂
2. Я попытался использовать это как свой XML, и это сработало! Большое вам спасибо, сэр!
Ответ №3:
да, эта проблема, и если с xml это не сделано, тогда вы импортируете android.R; так что это выдаст ошибку, если у вас есть xml, удалите это и импортируйте PACKAGENAME.R;
Ответ №4:
Во-первых: убедитесь, что ваши TextView
данные присутствуют в вашем макете: main.xml
:
<TextView android:id="@ id/tv1" .../>
<TextView android:id="@ id/tv2" .../>
<TextView android:id="@ id/tv3" .../>
Второе: перестройте свой проект, выполнив следующие действия: Project ==> Clean ==> Выберите свой проект и нажмите OK .
Ответ №5:
Причина, по которой это происходит :
findViewById()
будет искать текстовые представления в иерархии представлений, установленной setContentView(R.layout.main)
. Так что, если текстовые представления не находятся в main.xml вы получите нулевое значение