Java Android从静态上下文中获取片段中的资源
我试图解决我的问题。它与此类似,但我使用片段,所以当我需要上下文时,通常需要调用getActivity() 基本上我有上面链接中描述的App.java,我有Java Android从静态上下文中获取片段中的资源,java,android,static,resources,Java,Android,Static,Resources,我试图解决我的问题。它与此类似,但我使用片段,所以当我需要上下文时,通常需要调用getActivity() 基本上我有上面链接中描述的App.java,我有 android:name=".App" inside my <application> tag 在我的一个片段中,我呼唤 MiscMethods.ErrorToast(1); 我只是从方法的“else{}”部分得到了“错误错误代码”消息 您能帮我纠正一下吗?更好的格式会使您的问题更容易找到: public static vo
android:name=".App" inside my <application> tag
在我的一个片段中,我呼唤
MiscMethods.ErrorToast(1);
我只是从方法的“else{}”部分得到了“错误错误代码”消息
您能帮我纠正一下吗?更好的格式会使您的问题更容易找到:
public static void ErrorToast(int errorCode) {
String errorString = null;
if (errorCode == 1) {
errorString = App.getContext().getString(R.string.error_tooManyFieldsEmpty);
}
if (errorCode == 2) {
errorString = App.getContext().getString(R.string.error_featureComingSoon);
}
if (errorCode == 3) {
errorString = App.getContext().getString(R.string.error_SwitchBreak);
} else {
errorString = "Wrong Error Code";
}
Toast errormsg = Toast.makeText(App.getContext(), errorString, Toast.LENGTH_SHORT);
errormsg.setGravity(Gravity.CENTER, 0, 0);
errormsg.show();
}
正如您现在看到的,您的if(errorCode==1)
应该可以工作,但是将被重写为if(errorCode==3)
在这种情况下将为false,而您的else将重写errorString
变量
一个开关(errorCode)
这3个案例就是您要找的
最后提示:改进格式 在CoreApplication.java中的代码下编写 [第1步]
public class CoreApplication extends Application {
private static CoreApplication instance;
}
[步骤2]
onCreate(){
instance = this;
}
[步骤3]加 [步骤4]
在你的片段中调用
getGlobalApplicationContext()
谢谢,这不是一个格式问题,我只是不知道else在最后一个出现之前就出现了,它是false。。。我认为只有当以上所有的都是错误的时候它才会运行:)现在我做了一个切换,我的意思是,如果有更好的格式,你应该可以更容易地看到程序流程:)你读的代码比你写的要多10倍,所以好的可读性总是值得“更多的工作”。
onCreate(){
instance = this;
}
public static CoreApplication getGlobalApplicationContext() {
if (instance == null) {
throw new IllegalStateException("this application does not
inherit GlobalApplication"); " +
"}
return instance;
}