1 个 TAB 下的多个活动,更改活动时崩溃
我在一个选项卡下有 2 个简单的活动(每个活动托管 1 个按钮的相对布局)。它们中的每一个都具有彼此的链接,因此您可以从一项活动转到另一项活动(所有操作都在同一选项卡下进行)。程序在第三次循环后崩溃(第一个活动 - 第二个 - 第一个 - 第二个 - 第一个 - 第二个)。
我使用以下代码从一个活动转到另一个活动:
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);
无论我在活动中拥有什么布局,基本上它仍然会在每个第三个循环中崩溃。
我没有其他想法,除了 android 将此导航(从同一个选项卡下的 1 个活动到另一个活动)解释为不定式循环?这基本上是用户所做的,而不是我正在编程的循环。
这是android的bug还是我做错了什么?
我收到此错误:
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.
I have 2 simple activities (relative layouts hosting 1 button each) under one tab. Each of them has a link to each other so you can go from one activity to another (everything works under the same tab). The program crashes after the 3rd loop (1st activity - 2nd - 1st - 2nd - 1st - 2nd).
I go from one activity to another with the following code:
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 doesn't matter what layouts I have in the activities, basically it still crashes every 3rd loop.
I have no other ideas except that android interprets this navigation (from 1 activity to another under the same tab) as an infinitive loop? Which basically users does, not a loop that is being programmed by me.
Is it some android bug or I am doing something wrong?
I am getting this error:
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)
EDIT:
OK, I have an idea why this error appears. Every time I go from one activity to another I'm creating new Intent and starting new Activity. That might be the case.
But how can I reuse them? If I try to reuse the view I get this error:
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
第一个可疑的事情是 getApplicationContext() 的使用。使用
getApplicationContext()
“几乎总是错误的”,如下所述:何时调用活动上下文或应用程序上下文?The first suspicious thing is the use of
getApplicationContext()
. UsinggetApplicationContext()
"is almost always wrong", as explained here: When to call activity context OR application context?