首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误: Theme.Translucent & FLAG_ACTIVITY_REORDER_TO_FRONT

错误: Theme.Translucent & FLAG_ACTIVITY_REORDER_TO_FRONT
EN

Stack Overflow用户
提问于 2012-02-16 18:18:34
回答 6查看 3.8K关注 0票数 18

我有一个半透明主题的活动:

代码语言:javascript
运行
复制
android:theme="@android:style/Theme.Translucent.NoTitleBar"

同样,这个问题也可以通过这个主题重现:

代码语言:javascript
运行
复制
<style name="MyTheme" parent="@android:style/Theme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackground">@null</item>
</style>

此活动在启动时加载并保存在内存中(当我启动此活动时,我将FLAG_ACTIVITY_REORDER_TO_FRONT标志添加为extra)。

问题:当我启动这个活动(从菜单中)时,活动没有显示,什么也没有发生。但是:如果我去掉了半透明的主题:一切都很好,活动就会出现在前面。

是的,调用了onNewIntent()。

如果我按回半透明的活动是下面的一个!但它必须是最顶端的。

一个例子是

A(半透明活性)B C

堆栈:A

A startActivity(B)

堆栈: A、B

B startActivity(C)

堆栈: A、B、C

带有标志FLAG_ACTIVITY_REORDER_TO_FRONT的C startActivity(A) //

堆栈应该是: B,C,A

但是A永远不会被放在前面,尽管它的onNewIntent()被调用了。

有什么想法吗?

旁注

有趣的未解问题:http://groups.google.com/group/android-developers/browse_thread/thread/269c67f6b39cfe45?pli=1

不希望使用singleTasksingleInstanceandroid:launchMode。它们改变了后台堆栈,并将活动移动到自己的堆栈中。因此,我们不再有A,B,C。

singleTask和singleInstance -不适合大多数应用程序,因为它们产生的交互模型可能不为用户所熟悉,并且与大多数其他应用程序非常不同。

http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

任何想要可视化表示launchModes的人都可以试试这个应用程序:https://play.google.com/store/apps/details?id=com.novoda.demos.activitylaunchmode

EN

Stack Overflow用户

发布于 2012-04-28 13:28:37

我只是移除了标志,对我来说这一切都是有效的,没有任何problem..First活动在called..Just尝试时保持透明并在顶部。

下面是我整个示例的代码,

FirstAct

代码语言:javascript
运行
复制
public class FirstAct extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       Button btn = new Button(this);
       btn.setText("First Here Go To Second");
       btn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            Intent intent = new Intent(FirstAct.this,SecondAct.class);
            startActivity(intent);
        }
    });
       setContentView(btn);
    }
}

SecondAct

代码语言:javascript
运行
复制
public class SecondAct extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       Button btn = new Button(this);
       btn.setText("Second Here Go To Third");
       btn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            Intent intent = new Intent(SecondAct.this,ThirdAct.class);
            startActivity(intent);
        }
    });
       setContentView(btn);
    }
}

ThirdAct

代码语言:javascript
运行
复制
public class ThirdAct extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       Button btn = new Button(this);
       btn.setText("Third Here Go To First");
       btn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            Intent intent = new Intent(ThirdAct.this,FirstAct.class);
            //intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            startActivity(intent);
        }
    });
       setContentView(btn);
    }
}

使用LaunchMode SingleInsance *清单编辑活动*

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.mj.temp"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".FirstAct" android:theme="@android:style/Theme.Translucent.NoTitleBar"  android:launchMode="singleInstance"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="SecondAct" android:launchMode="singleInstance"></activity>
        <activity android:name="ThirdAct" android:launchMode="singleInstance"></activity>
    </application>
</manifest>
票数 0
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9309479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档