Android从静态上下文中获取片段中的资源

时间:2012-10-02 21:33:21

标签: java android static resources

我看了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 {}”部分得到“错误的错误代码”消息

你能帮助我做对吗?

2 个答案:

答案 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()