- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上我在我的应用程序中使用 ActivityGroup。我有这种情况:
我有 Activity A 的 Tabhost。
Activity A 创建 childActivity B。
A ---> B
startChildActivity("CollectionList", new Intent(this,MyCollectionList.class));
Activity B 创建了 3 个子 Activity C、D。
B ---> C (childActivity of B)
startChildActivity("Recommended", new Intent(MyCollectionList.this,Recommended.class));
B ---> D (childActivity of B)
startChildActivity("ExpectSoon", new Intent(MyCollectionList.this,ExpectSoon.class));
B也创建了另一个childActivity,命名为E。
B ---> E
Intent previewMessage = new Intent(getParent(), MyCollectionId.class);
TabGroupActivity parentActivity = (TabGroupActivity)getParent();
parentActivity.startChildActivity("MyCollectionId", previewMessage);
所以基本上 Activity C 和 D 也可以启动 Activity E,使用:
Intent previewMessage = new Intent(getParent(), MyCollectionId.class);
TabGroupActivity parentActivity = (TabGroupActivity)getParent();
parentActivity.startChildActivity("MyCollectionId", previewMessage);
我重写了 onBackPressed 方法,所以我可以控制后退按钮。它看起来像这样:
private ArrayList<String> mIdList;
@Override
public void onBackPressed () {
int length = mIdList.size();
if ( length >=1) {
Activity current = getLocalActivityManager().getActivity(mIdList.get(length-1));
current.finish();
}
}
所以我的问题是,当我在 Activity E 中并按下后退按钮时,我的应用程序关闭。我遇到的另一个问题是 Activity E 中的警报对话框。
Button deactivate = (Button) findViewById(R.id.deactivate);
deactivate.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
new AlertDialog.Builder( getParent() )
.setTitle( "Warning" )
.setMessage( "The collection will be removed completely from the device.You can reactivate it later again.This operation requires internet connection." )
.setPositiveButton( "Go ahead", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.d("AlertDialog", "Positive");
}
})
.setNegativeButton( "Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.d("AlertDialog","Negative");
}
})
.show();
}
});
当我从 A 启动 Activity E 时,当我单击将显示警报对话框的按钮时,一切正常。但是当我从 C 或 D 启动 Activity E 时,它会抛出异常:
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): FATAL EXCEPTION: main
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@4630ea20 is not valid; is your activity running?
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at android.view.ViewRoot.setView(ViewRoot.java:509)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at android.view.Window$LocalWindowManager.addView(Window.java:424)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at android.app.Dialog.show(Dialog.java:241)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at android.app.AlertDialog$Builder.show(AlertDialog.java:802)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at com.stampii.stampii.mystampii.MyCollectionId$4.onClick(MyCollectionId.java:75)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at android.view.View.performClick(View.java:2408)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at android.view.View$PerformClick.run(View.java:8817)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at android.os.Handler.handleCallback(Handler.java:587)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at android.os.Handler.dispatchMessage(Handler.java:92)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at android.os.Looper.loop(Looper.java:144)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at android.app.ActivityThread.main(ActivityThread.java:4937)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at java.lang.reflect.Method.invokeNative(Native Method)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at java.lang.reflect.Method.invoke(Method.java:521)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-15 15:48:22.819: ERROR/AndroidRuntime(32440): at dalvik.system.NativeStart.main(Native Method)
编辑:
我的 startChildActivity 看起来像这样:
public void startChildActivity(String Id, Intent intent) {
Window window = getLocalActivityManager().startActivity(Id,intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
if (window != null) {
mIdList.add(Id);
setContentView(window.getDecorView());
}
最新的 LogCat,同时在 ActivityE 中使用 Recommended.parentActivity:
new AlertDialog.Builder( Recommended.parentActivity )
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): FATAL EXCEPTION: main
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): java.lang.NullPointerException
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): at com.android.internal.app.AlertController$AlertParams.<init>(AlertController.java:743)
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): at android.app.AlertDialog$Builder.<init>(AlertDialog.java:273)
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): at com.stampii.stampii.mystampii.MyCollectionId$4.onClick(MyCollectionId.java:62)
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): at android.view.View.performClick(View.java:2408)
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): at android.view.View$PerformClick.run(View.java:8817)
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): at android.os.Handler.handleCallback(Handler.java:587)
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): at android.os.Handler.dispatchMessage(Handler.java:92)
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): at android.os.Looper.loop(Looper.java:144)
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): at android.app.ActivityThread.main(ActivityThread.java:4937)
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): at java.lang.reflect.Method.invokeNative(Native Method)
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): at java.lang.reflect.Method.invoke(Method.java:521)
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-15 16:33:53.509: ERROR/AndroidRuntime(1967): at dalvik.system.NativeStart.main(Native Method)
最佳答案
你可以做一件事在 ActivityA.java 中
public static Activity parentActivity;
onCreate()
{
parentActivity=this;
}
// start your child activity ie(E)
ActivityE.java
Button deactivate = (Button) findViewById(R.id.deactivate);
deactivate.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
new AlertDialog.Builder( ActivityA.parentActivity.this )
.setTitle( "Warning" )
.setMessage( "The collection will be removed completely from the device.You can reactivate it later again.This operation requires internet connection." )
.setPositiveButton( "Go ahead", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.d("AlertDialog", "Positive");
}
})
.setNegativeButton( "Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.d("AlertDialog","Negative");
}
})
.show();
}
});
关于Android Childactivity getParent 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7065108/
基本上我在我的应用程序中使用 ActivityGroup。我有这种情况: 我有 Activity A 的 Tabhost。 Activity A 创建 childActivity B。 A --->
有谁知道是否可以在代码中取消输出缓存?我的意思是,如果我将输出缓存放在子操作上,如下所示,我可以根据条件从子操作内部取消缓存吗? [ChildActionOnly] [OutputCache(Dura
我正在尝试在我的应用中实现视频。我想我可以使用 YouTubePlayer API 并打开我的视频。如果我打开一个正常的新 Intent ,这工作正常。 但是,如果我在应用程序底部有一个菜单的 chi
我尝试使用缓存配置文件在我的 mvc 应用程序中缓存子操作,但出现异常:持续时间必须是正数。 我的 web.config 如下所示:
我正在尝试利用 .Net MVC 3 中的 donut 缓存功能。对于我的主页,在我的家庭 Controller 中,我有: public ActionResult Index() { ret
我正在使用一个基本 Activity 作为另一个 Activity “RecicpeActivity”的父 Activity ,因为我已经覆盖了基本 Activity 中的 setContentVie
如何确定当前操作是 ChildAction 还是路由的主要操作?我应该检查 URL 并与操作的名称进行比较吗?这不太好,因为它取决于路由模式...... 或者我应该制作两个同名的 Action ,将
这个问题在这里已经有了答案: Exporting ViewData\ModelState to Child Action (1 个回答) 关闭 9 年前。 我有 post action 有像普通的代
我对子操作进行了相当密集的调用,通过以下方式在几个 View 中简单地调用了大量的 C# 代码: @Html.RenderPartial("mychildAction") 现在,每当调用此操作时,我都
因此,在为我的 MVC3 应用程序寻找强大的安全解决方案后,我遇到了 this blog post通过里克·安德森。它详细介绍了一种 WhiteList 方法,其中将 AuthorizeAttribu
我以为这会很简单,但我设法以某种方式将其解决。如果我想将 URL 参数传递给另一个操作,我是否必须为此创建一个新路由? Controller [ChildActionOnly] public
我在使用 Ninject 和 EntityFramework 的 ASP.NET MVC 3 应用程序中遇到一个奇怪的问题。 我们有一个 ISession 接口(interface),它由 Entit
我是一名优秀的程序员,十分优秀!