我看了here尝试解决我的问题。它很相似,但我使用 fragment ,所以当我需要上下文时,我通常需要调用 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();
}
}
在我调用的一个 fragment 中
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
变量。
switch(errorCode)
和 3 个案例就是您要查找的内容。
最后提示:改进格式!
关于java - Android 从静态上下文中获取 fragment 中的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12698675/