Android не может получить доступ к компоненту TextView из activity

#android #android-layout #exception-handling #textview

#Android #android-макет #исключение #textview

Вопрос:

У меня следующая активность.

 package org.dewsworld.ui;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class DetailList extends Activity {

    TextView title = (TextView) findViewById(R.id.title) ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.detail_list);

        title.setText("hello world"); 
    }

}
  

Которые манипулируют detail_list.xml

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent" android:weightSum="1">
    <TextView android:id="@ id/title" android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_height="wrap_content" android:layout_width="match_parent"
        android:text="@string/headline" />
    <ListView android:id="@ id/listView1" android:layout_width="match_parent" android:layout_height="match_parent"></ListView>

</LinearLayout>
  

Но, когда я запускаю это, я получаю ошибку времени выполнения. LogCat является,

введите описание изображения здесь

Ответ №1:

попробуйте так

 public class DetailList extends Activity {
TextView title;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.detail_list);

    title = (TextView) findViewById(R.id.title) ;
    title.setText("hello world"); 
  }
}
  

Ответ №2:

 package org.dewsworld.ui;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class DetailList extends Activity {

    TextView title;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.detail_list);
        title = (TextView) findViewById(R.id.title) ;;
        title.setText("hello world"); 
    }

}
  

он жалуется, потому что вы пытаетесь получить значение TextView, используя метод Activity, который еще не создан (поскольку его Oncreate() еще не запущен)