我已经看到了关于这个主题的一些问题(例如:https://github.com/jfeinstein10/SlidingMenu/issues/5),但我仍然不清楚.我希望有人可以澄清一下.
语境:
请参阅https://github.com/jfeinstein10/SlidingMenu
我有一个Android应用程序,通过活动和片段组织屏幕(即)每个屏幕是一个包含一个或多个片段的活动.新要求是添加一个滑动菜单(类似于该库提供的).
问题:
从示例和讨论中可以看出,正确的模型将只有1个主要活动,然后将切换进出属于不同屏幕的片段.事实上,作者在上面的帖子中提到:"如果你根据列表选择启动活动,那么你就不会有交换你正在谈论的视图的行为."还有"你不能将一个Activity放到上面的视图中.当你想到一个Activity是什么时,这没有任何意义."
为什么不合理?显然,我在这里忽略了这一点.
题:
鉴于我的项目已经包含多个活动(一个对应于每个屏幕),那么我唯一的选择就是重新组织项目以获得JUST 1 MAIN ACTIVITY,以便使用这个库?或者,当单击滑动菜单中的列表项时,是否有任何方法可以启动新活动,并且仍然可以观察滑动菜单行为,[ 编辑 - 添加最后一部分更清晰]或换句话说,如何完全在我现有的应用程序设计中使用此库.
提前致谢
上下文:用户当前位于以下页面:http://myinternaldomain.com/page/
问题:当用户单击上一页中的按钮时,处理此点击的MVC Controller方法应该进行一些处理并将用户重定向到外部域,例如google.com.我分别尝试了下面的两个语句,但两个调用都将外部URL附加到用户所在的当前内部页面:
System.Web.HttpContext.Current.Response.Redirect("www.google.com"); // plain old HttpResponse object
return Controller.Response.Redirect("www.google.com"); // MVC Controller's response object
Run Code Online (Sandbox Code Playgroud)
上述两个声明都会导致用户重定向到:http: //myinternaldomain.com/page/www.google.com, 而不是仅将用户重定向到www.google.com.
我在这里错过了什么?
上下文:一个新类说Bar,在运行时注入JVM.这个类属于com.foo这个包.对此类的引用将注入到属于同一包的另一个类中.每次加载时,新类可能都有不同的名称 - 因此不能将其指定为任何配置文件的一部分 - 例如,不能在build.xml中指定它作为jar文件的一部分包含在内.
问题:在类加载时,jvm会抛出一个错误 - java结果1.尽管我无法确定根本原因,但看起来类加载器找不到新注入的类.服务器以详细模式运行,该模式显示JVM加载的类列表,并且可以看到这个新注入的类已加载.
问题:新注入的类是否已经在类路径中?如果没有怎么设置呢?
[编辑] - 在问题中添加一些代码.
代码段 - 1:下面的代码段是从PreMain方法调用的 - Premain方法将由JVM代理调用,并将在运行时注入检测引用.Premain方法从一个方法中返回一个新类--Bar - 和一个对这个新类的引用 - returnsABool() - 在一个现有的类中 - ExistingClass.
public static void premain(String agentArgs, Instrumentation inst) {
// 1. Create and load the new class - Bar
String className = "Bar";
byte [] b = getBytesForNewClass();
//override classDefine (as it is protected) and define the class.
Class clazz = null;
try {
ClassLoader loader = ClassLoader.getSystemClassLoader();
Class cls = Class.forName("java.lang.ClassLoader");
java.lang.reflect.Method method =
cls.getDeclaredMethod("defineClass", …Run Code Online (Sandbox Code Playgroud) Context:java.io.File类有一个静态内部类方法如下:
LazyInitialization.temporaryDirectory();
Run Code Online (Sandbox Code Playgroud)
[编辑添加更多代码]我的代码最终调用上面的代码行.从temporaryDirectory()方法中抛出异常,在我的上下文中很好/期望.
try {
File tempFile = File.createTempFile("aaa", "aaa");
} catch (Exception e) {
// handle exception
}
Run Code Online (Sandbox Code Playgroud)
然后,当我再次调用相同的方法(createTempFile)时,我得到一个"java.lang.NoClassDefFound错误 - 无法初始化类java.io.File $ LazyInitialization"
问题:我假设在调用静态方法时,类加载器应该已经加载了内部类LazyInitialization,即使内部方法引发了异常.然而,为什么我在第二次调用时看到NoClassDefFound错误?原始假设不正确吗?