launchModes,singleTask:如何QUOT之间的切换和;屏幕"?是意图的唯一途径,如果是这样,我认为我有一个问题 [英] launchModes, singleTask: how to switch between "screens"? Is Intents the only way, and if so I think I have a problem

查看:80
本文介绍了launchModes,singleTask:如何QUOT之间的切换和;屏幕"?是意图的唯一途径,如果是这样,我认为我有一个问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在许多问题(<一个href=\"http://stackoverflow.com/questions/2013865/header-views-and-buttons-how-do-i-attach-listeners-to-buttons-in-a-header-th\">like这个)我一直在寻找到我的应用程序如何换屏。我有在顶部的头,有4个按钮。每个按钮是为了取代内容(即切换画面):

In a number of questions (like this one) I have been looking into how to "change screens" in my app. I have a "header" on top, with 4 buttons. Each button is meant to replace the "content" (ie change screen):

+--------------------+
| menu with buttons  |
+--------------------+
|                    |
|                    |
|  C O N T E N T     |
|                    |
|                    |
+--------------------+

当我点击菜单按钮,我运行下面的code:

When I click a Menu button, I run the following code:

@Override
public void onClick(View v)
{
    Intent myIntent = new Intent(BaseActivity.this, ActivityMain.class);
    BaseActivity.this.startActivity(myIntent);
}

正如你所看到的, startActivity 的执行。现在,如果我不指定launchMode的活动就意味着launchMode =正常。如果launchMode ==正常,这意味着该活动将每一个我用导航头球顶按键时重新创建,这意味着在表单元素输入的所有数据都消失了(或者至少是隐藏的)。

As you can see, the startActivity is executed. Now, if I do not specify "launchMode" for the Activity that means that launchMode = normal. If launchMode == normal that means that the Activity will be re-created each and every time I navigate using the top header buttons, and that means that all data entered in "form elements" are gone (or at least hidden).

所以,我觉得这听起来有点漂亮的launchModesingleTask。如果我说launchMode添加到我的活动,它不会被重新创建时,我的按钮导航,从而保持状态。大!好了,直到我读

So, I found the launchMode "singleTask" that sounded sort of nice. If I add that launchMode to my Activity, it will not be re-created when I navigate with the buttons, thus keeping state. Great! Well, until I read this:

如上所述,从未有一个singleTask或singleInstance活动的多个实例,以便实例预期处理所有新的意图。

我发现这句话意味着,也只能有一个具有launchMode设置为singleTask活动 - 如果我有一个以上的它不会工作(没有编译器错误虽然)。

I found out that the sentence mean that there can be only one Activity that has the launchMode set to "singleTask" - if I have more than one it wont work (no compiler error though).

这意味着我只能保持状态我的屏幕之间的一个活动,来回切换时(导航)!

<一个href=\"http://stackoverflow.com/questions/2032173/configuration-changed-orientation-change-and-destroying-activities-is-this-th\">Once一次,这真的是它如何工作的?

Once again, is this really how it supposed to work?

推荐答案

您似乎是强迫的活动存在,他们不应该。

You seem to be forcing activities to exist where they shouldn't.

如果你要使用的按钮作为人造的标签,那么就应该有一个活动,没有 startActivity()通话,并使用 ViewFlipper 的FrameLayout 或东西来改变你的内容相匹配的按钮。毕竟,这是标签是如何工作的,只是因为你选择不使用 TabHost / TabActivity 但滚你自己的标签式的系统,设计的方法应该是一样的。

If you are going to use buttons as faux tabs, then there should be one activity, no startActivity() calls, and use ViewFlipper or a FrameLayout or something to change your content to match the button. After all, this is how tabs work, and just because you are electing not to use TabHost/TabActivity but roll your own tab-esque system, the design approach should be the same.

这篇关于launchModes,singleTask:如何QUOT之间的切换和;屏幕&QUOT;?是意图的唯一途径,如果是这样,我认为我有一个问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆