[英]Android getting resources in fragments from static context
我在这里寻找解决问题的方法。 相似,但是我使用片段,因此当我需要上下文时,通常需要调用getActivity()。
基本上我有上面链接中所述的App.java,我有
android:name=".App" inside my <application> tag
添加到我的AndroidManifest.xml。 现在,我有了这个类,用于收集我经常使用的所有东西:
public class MiscMethods{
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();
}
}
在我的片段之一中,我称
MiscMethods.ErrorToast(1);
我只是从方法的“其他{}”部分收到“错误错误代码”消息
你能帮我做对吗?
更好的格式将使您的问题更容易找到:
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
变量。
您正在寻找一个switch(errorCode)
和3种情况。
最后提示:改善格式!
在您的CoreApplication.java中的代码下编写
[第1步]
public class CoreApplication extends Application {
private static CoreApplication instance;
}
[第2步]
onCreate(){
instance = this;
}
[step3]
加
public static CoreApplication getGlobalApplicationContext() {
if (instance == null) {
throw new IllegalStateException("this application does not
inherit GlobalApplication"); " +
"}
return instance;
}
[第四步]
在您的片段中调用getGlobalApplicationContext()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.