我看了here试图解决我的问题。它类似,但我使用片段,所以当我需要上下文时,我通常需要调用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);
我只是从我方法的“else {}”部分得到“错误的错误代码”消息
你能帮助我做对吗?
答案 0 :(得分: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)
将是假的,而您的其他人将覆盖您的errorString
变量。
A switch(errorCode)
,你正在寻找3个案例。
最后提示:改进格式化!
答案 1 :(得分:0)
在 CoreApplication.java
中的代码下编写[step1]
public class CoreApplication extends Application {
private static CoreApplication instance;
}
[step2]
onCreate(){
instance = this;
}
[step3]
添加
public static CoreApplication getGlobalApplicationContext() {
if (instance == null) {
throw new IllegalStateException("this application does not
inherit GlobalApplication"); " +
"}
return instance;
}
[Step4]
在片段中调用getGlobalApplicationContext()