Представления в RelativeLayout с MapView являются нулевыми - PullRequest
1 голос
/ 20 августа 2011

У меня есть MapActivity с просмотром карты.Работает нормально.Теперь я хочу добавить SeekBar на мой MapView.Это должно быть внизу, но на карте.Пользователь будет прокручивать, чтобы установить расстояние.Без разницы.Моя проблема в том, что любое представление, которое я пытаюсь выставить, имеет значение null, когда я достигаю их с помощью findViewById ().

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <com.google.android.maps.MapView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/mapview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:apiKey="mykey"/>
    <SeekBar
        android:id="@+id/DistanceBar"
        android:max="2000"
        android:progress="2000"
        android:layout_alignParentBottom="true"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="14dip"></SeekBar>
</RelativeLayout>

Я пытаюсь достичь этого следующим образом:

public class MyActivity extends MapActivity implements LocationListener {
...
SeekBar DistanceBar;
...
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mapView = (MapView) findViewById(R.id.mapview);
    DistanceBar = (SeekBar) findViewById(R.id.DistanceBar); //This is afterwards null.

Я провел исследование везде и не смог найти подобную проблему.Кто-то использовал что-то очень похожее.Поэтому я проигнорировал, что это нуль, я не вызывал SeekBar в onCreate ().Но SeekBar не был нарисован вообще.Не могу ли я добавить другие виды в картографическую активность?

Спасибо за любую идею!

ВАЖНОЕ РЕДАКТИРОВАНИЕ: Средство просмотра графического макета показывает SeekBar, как и должно быть внизу карты.

Я все еще получаю исключение NullPointerException: ОШИБКА / AndroidRuntime (12738): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной

ОШИБКА / AndroidRuntime (12738): java.lang.RuntimeException: Невозможно запустить действие ComponentInfo {com.MyApps.MapLocations/com.MyApps.MapLocations.MyActivity}: java.lang.NullPointerException

ОШИБКА / AndroidRuntime (12738): в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2663)

ОШИБКА/ AndroidRuntime (12738): на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2679)

ОШИБКА / AndroidRuntime (12738): на android.app.ActivityThread.access $ 2300 (ActivityThread.java:125)

ОШИБКА / AndroidRuntime (12738): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2033)

ОШИБКА / AndroidRuntime (12738): на android.os.Handler.dispatchMessage (Handler.java:99)

ОШИБКА / AndroidRuntime (12738): в android.os.Looper.loop (Looper.java:123)

ОШИБКА / AndroidRuntime (12738)): в android.app.ActivityThread.main (ActivityThread.java:4627)

ОШИБКА / AndroidRuntime (12738): в java.lang.reflect.Method.invokeNative (собственный метод)

ОШИБКА / AndroidRuntime (12738): в java.lang.reflect.Method.invoke (Method.java:521)

ОШИБКА / AndroidRuntime (12738): в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.выполнить (ZygoteInit.java:871)

ОШИБКА / AndroidRuntime (12738): в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:629)

ОШИБКА / AndroidRuntime (12738): at dalvik.system.NativeStart.main (собственный метод)

ERROR / AndroidRuntime (12738): вызвано: java.lang.NullPointerException

ERROR / AndroidRuntime (12738): вcom.MyApps.MapLocations.MyActivity.setupSeekbar (MyActivity.java:343)

ОШИБКА / AndroidRuntime (12738): на com.MyApps.MapLocations.MyActivity.onCreate (MyActivity.java:89)

ОШИБКА / AndroidRuntime (12738): в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047)

ОШИБКА / AndroidRuntime (12738)): в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2627)

ERROR / AndroidRuntime (12738): ... еще 11

Вот результат из HierarchyViewer: Here you can seen that there are 2 Views in the layout but only one (MapView) is shown on the tree :S

Ответы [ 2 ]

0 голосов
/ 20 августа 2011

Я только что скопировал файл main.xml как map.xml и удалил main.xml. И это сработало. Я до сих пор не понимаю, почему это произошло. Может быть, «основной» вызывает некоторые проблемы. Возможно, MapActivities определили для себя «основной» макет, который прерывает мой «основной» макет. Но это было решение как-то. Большое спасибо за ваше терпение!

ВАЖНОЕ РЕДАКТИРОВАНИЕ: Я определенно обнаружил проблему. Файл main.xml остался в папках layout-normal и layout-normal-long без какого-либо SeekBar. Я забыл отредактировать их.

0 голосов
/ 20 августа 2011

Не могу ли я добавить другие виды на карту?

Да, вы можете.

Очистите ваш проект (Project -> Clean из главного меню Eclipse или ant clean в командной строке). Затем используйте Hierarchy View , чтобы увидеть, что происходит. Похоже, либо ваши идентификаторы не в порядке (в этом случае очистка поможет), либо, возможно, вам не удалось сохранить XML или что-то в этом роде.

...