Несколько действий под 1 вкладкой, вылетает при смене действий - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть 2 простых действия (относительные макеты, размещающие по 1 кнопке каждое) на одной вкладке.Каждый из них имеет ссылку друг на друга, поэтому вы можете переходить от одного занятия к другому (все работает на одной вкладке).Программа вылетает после 3-го цикла (1-е действие - 2-е - 1-е - 2-е - 1-е - 2-е).

Я перехожу от одного действия к другому со следующим кодом:

Tabs s = (Tabs) getParent();
Intent myIntent = new Intent(getApplicationContext(), Map.class);
View view = s.getLocalActivityManager().startActivity("map",
    myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
setContentView(view);

Itне имеет значения, какие макеты у меня есть в действиях, в основном все равно происходит сбой при каждом 3-м цикле.

У меня нет других идей, кроме того, что android интерпретирует эту навигацию (от 1 действия до другого под той же вкладкой) какбесконечный цикл?Что в основном делают пользователи, а не цикл, который я программирую.

Это какая-то ошибка Android или я делаю что-то не так?

Я получаю эту ошибку:

02-17 10:36:00.566: E/AndroidRuntime(4155): FATAL EXCEPTION: main
02-17 10:36:00.566: E/AndroidRuntime(4155): java.lang.StackOverflowError
02-17 10:36:00.566: E/AndroidRuntime(4155):     at android.widget.TextView.getExtendedPaddingTop(TextView.java:1281)
02-17 10:36:00.566: E/AndroidRuntime(4155):     at android.widget.TextView.getVerticalOffset(TextView.java:3570)
02-17 10:36:00.566: E/AndroidRuntime(4155):     at android.widget.TextView.onDraw(TextView.java:4050)
02-17 10:36:00.566: E/AndroidRuntime(4155):     at android.view.View.draw(View.java:6880)
02-17 10:36:00.566: E/AndroidRuntime(4155):     at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
02-17 10:36:00.566: E/AndroidRuntime(4155):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-17 10:36:00.566: E/AndroidRuntime(4155):     at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
02-17 10:36:00.566: E/AndroidRuntime(4155):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-17 10:36:00.566: E/AndroidRuntime(4155):     at android.view.View.draw(View.java:6883)

РЕДАКТИРОВАТЬ: ОК, у меня есть идея, почему эта ошибка появляется.Каждый раз, переходя от одного занятия к другому, я создаю новое намерение и начинаю новое задание.Это может быть так.Но как я могу их повторно использовать?Если я пытаюсь повторно использовать представление, я получаю эту ошибку:

02-17 13:14:03.429: E/AndroidRuntime(5374): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

1 Ответ

0 голосов
/ 16 марта 2012

Первая подозрительная вещь - это использование getApplicationContext().Использование getApplicationContext() «почти всегда неправильно», как объясняется здесь: Когда вызывать контекст действия ИЛИ контекст приложения?

...