Не удалось найти некоторые компоненты, позвонив FindViewById
-
26-10-2019 - |
Вопрос
FindViewByid не может получить кнопку и радиусбар, хотя их идентификатор существует. Код сбивается при начале SaveButton или Radiusbar.
АКТИЧИК:
private Button saveButton;
private EditText titleText;
private SeekBar radiusBar;
private TextView radiusValue;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
titleText = (EditText) findViewById(R.id.title);
radiusValue = (TextView) findViewById(R.id.radiusValue);
saveButton = (Button) findViewById(R.id.confirm);
radiusBar = (SeekBar) findViewById(R.id.radiusBar);
XML -файл:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="3dp"
android:text="@string/title"
android:textColor="#00ffff"
android:textSize="20sp"
android:textStyle="bold" />
<EditText
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="3dp" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/myLocationText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="3dp"
android:text="@string/hello"
android:textColor="#ffffff"
android:textSize="15sp" />
<com.google.android.maps.MapView
android:id="@+id/myMapView"
android:layout_width="fill_parent"
android:layout_height="300dp"
android:apiKey="my google maps api key"
android:clickable="true"
android:enabled="true"
android:padding="5dp" >
</com.google.android.maps.MapView>
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/radiusText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:paddingLeft="3dip"
android:paddingRight="3dip"
android:text="@string/proximity"
android:textColor="#00ffff"
android:textSize="20sp"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/radiusText" >
<TextView
android:id="@+id/radiusValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="3dip"
android:paddingRight="3dip"
android:text="@string/radius"
android:textColor="#00ffff"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
<SeekBar
android:id="@+id/radiusBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/radiusText"
android:max="1000"
android:padding="5dip"
android:soundEffectsEnabled="true" />
<Button
android:id="@+id/confirm"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/radiusBar"
android:padding="3dp"
android:text="@string/confirm"
android:textSize="20sp" />
</RelativeLayout>
Я новичок в Android. Несмотря на то, что я использовал комментарий старой школы или DDMS, я не мог найти, почему это происходит. Спасибо за помощь.
Решение
Когда вы говорите «сбой», вы должны продолжать сказать «... и это вывод журнала с сообщением об ошибке». В любом случае, идентификаторы ресурсов, безусловно, существуют, как компилируется ваш код. Тем не менее, общая ошибка системы сборки с Android заключается в том, что ваши идентификаторы ресурсов могут быть неправильный После переупорядочивания XML. Я думаю, что вы обнаружите, что ошибка - это класссенация. Решение: очистить свой репо (например, с ant clean
, или какая -то кнопка/меню в затмении) и перекомпилируйте все с нуля.
Другие советы
Всякий раз, когда у меня была похожая проблема, я обычно мог решить ее, используя следующее меню в Eclipse: Project-> Clean
Вы можете увидеть класс, который автоматически генерирует Android проекты
Eclipse немного "слишком" умный в этом случае. Он найдет идентификатор, который является частью любого макета. Не только тот, который вы назначили в качестве макета setContentView ().
Таким образом, у вас есть действительный идентификатор, но он недопустим во время выполнения, когда макет не содержит идентификатор.