#java #android
#java #Android
Вопрос:
Вот код, для которого я сталкиваюсь с исключением
public class SHOSuper extends Activity{
String officerName;
String arr[];
String[] offN;
public void onCreate(Bundle savedInstanceState) {
try{
super.onCreate(savedInstanceState);
final TextView tv;
tv=(TextView)findViewById(R.id.txt1);
System.out.println("I AM NEW ACTIVITY");
arr=Receiver.split(Receiver.orignal, ",");
String value1= arr[1];
System.out.println("Array index " value1);
String value2=arr[2];
System.out.println("Array 2nd index " value2);
tv.setText(value1 " At " value2);
officerName= arr[5];
offN =new String[officerName.length()];
offN=Receiver.split(officerName, "_");
}
catch(Exception e){
e.printStackTrace();
}
setContentView(R.layout.main);
}
}
В строке tv.setText(value1 " At " value2);
я сталкиваюсь с исключением нулевого указателя, подобным этому
**04-12 13:25:18.105: WARN/System.err(527): java.lang.NullPointerException
04-12 13:25:18.265: WARN/System.err(527): at com.sho.SHOSuper.onCreate(SHOSuper.java:24)**
Можете ли вы мне помочь?
Комментарии:
1. на этот вопрос было получено множество ответов всего через 5 минут после публикации запроса…….
Ответ №1:
findViewById()
находит представление в вашем текущем contentView
, а не случайный идентификатор в xml.
Итак, когда вы делаете это:
tv=(TextView)findViewById(R.id.txt1);
Он не может найти идентификатор, даже если он доступен в вашем layout.main
: макет еще не установлен. Вызовите setContentView(R.layout.main);
, прежде чем пытаться найти какие-либо представления.
(вы также можете использовать inflater
для получения «случайного» представления, а затем добавить его в другое представление, но это не похоже на то, что вы ищете)
Ответ №2:
Переместите setContentView(R.layout.main);
, прежде чем выполнять tv=(TextView)findViewById(R.id.txt1);
Ответ №3:
Вызовите эту функцию
setContentView(R.layout.main)
перед вызовом
tv=(TextView)findViewById(R.id.txt1);
потому что findViewById() выполняет поиск в иерархии представлений, установленной setContentView()
Ответ №4:
Казалось бы, что
tv=(TextView)findViewById(R.id.txt1);
возвращает значение null