2011-03-07 4 views
4

Есть ли способ, чтобы удалить вид, который был установлен сУдалить вид и воссоздать его

setContentView(R.layout.set_map_center); 
mapView = (MapView) findViewById(R.id.mapview); 

Если я называю эту точку зрения еще раз, то я получаю сообщение об ошибке сказав:

java.lang .IllegalStateException: Вы разрешается только иметь один MapView в MapActivity

+0

Что вы подразумеваете под «если я снова назову этот взгляд»? Вы имеете в виду через findViewById? –

+0

На самом деле, я думаю, что ошибка включена: setContentView (R.layout.set_map_center); – ProNeticas

ответ

0

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

Простейшим обходным решением было удалить инфляцию или setContentView с помощью xml и перейти к динамической сборке карты, а затем сохранить ее в памяти.

Я удалил:

// Show Map Settings Screen 
setContentView(R.layout.set_map_center); 

// Initiate the center point map 
if (mapView == null) { 
    mapView = (MapView) findViewById(R.id.mapview); 
} 

И заменить его:

if (mapView == null) { 
    // public MapView mapView = null; // Public defined Variable 
    mapView = new MapView(this, this.getString(R.string.APIMapKey)); 
} 

setContentView(mapView); 

Это прекрасно работает и дает мне шанс, чтобы вызвать карту. Спасибо, что ответили всем.

0

Попробуйте это .. пихты t раздуйте представление, которое вы пытаетесь установить в setContentView(), следующим кодом;

layout = new LinearLayout(context); 
    layout.setVisibility(VISIBLE); 
    v = View.inflate(getContext(), R.layout.set_map_center, layout); 
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
params.gravity = Gravity.NO_GRAVITY; 
    addView(layout, params); 
    v.setVisibility(VISIBLE); 
layout.setVisibility(VISIBLE); 

всякий раз, когда вы хотите удалить вид, вы можете просто сказать layout.setVisibility (GONE) , если вы не в состоянии доступа GONE сказать View.GONE

+0

layout.setVisibility (GONE) не удаляет вид. Вам нужно вызвать parentView.removeView (viewToDelete); - что действительно удаляет представление, «View.GONE» просто заставляет просмотр исчезать для пользователя, но он не удаляется. –

+0

Я получаю ошибки в VISIBLE, какой пакет мне нужно импортировать, чтобы поддержать это? – ProNeticas

+0

Я все еще получаю ошибки на видимом, это то, что просил меня Eclipse: LinearLayout layout = new LinearLayout (getBaseContext()); \t \t layout.setVisibility (VISIBLE); \t \t v = View.inflate (getBaseContext(), R.layout.set_map_center, макет); \t \t FrameLayout.LayoutParams PARAMS = новые FrameLayout.LayoutParams ( \t \t \t \t LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); \t \t params.gravity = Gravity.NO_GRAVITY; \t \t addContentView (макет, параметры); \t \t v.setVisibility (VISIBLE); \t \t layout.setVisibility (VISIBLE); – ProNeticas

1
((ViewGroup)mapView.getParent()).removeView(mapView); 
+0

Это не работает, ошибка все еще существует.Я называю это, когда экран настроек перезагружается, и он по-прежнему имеет ту же ошибку. – ProNeticas

+0

Это был всего лишь ответ на ваш вопрос «Есть ли способ удалить представление» ;-) Код, который вы отправили, недостаточно, чтобы увидеть, где происходит ошибка. Вы должны разместить больше кода, на самом деле это часть, которая выдает исключение. –

+0

Не совсем понятно, чего вы на самом деле пытаетесь достичь. Почему бы вам не удалить карту в первую очередь с вашего макета xml, если вам это вообще не нужно/хотите удалить? –

Смежные вопросы