我有一个半透明主题的活动:
android:theme="@android:style/Theme.Translucent.NoTitleBar"
同样,这个问题也可以通过这个主题重现:
<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
不希望使用singleTask
或singleInstance
的android: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
发布于 2012-04-28 13:28:37
我只是移除了标志,对我来说这一切都是有效的,没有任何problem..First活动在called..Just尝试时保持透明并在顶部。
下面是我整个示例的代码,
FirstAct
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
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
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 *清单编辑活动*
<?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>
https://stackoverflow.com/questions/9309479
复制相似问题