全局变量未正确传递

时间:2015-07-08 04:17:20

标签: android

我创建了一个包含公共变量和函数的类,并且由与我的应用程序中的不同UI页面交互的活动类继承。我一直在使用func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { UINavigationBar.appearance().backIndicatorImage = UIImage() UINavigationBar.appearance().backIndicatorTransitionMaskImage = UIImage() } UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(-20, 0), for: UIBarMetrics.default) )函数在类和活动之间传递信息。突然之间,我再也无法以这种方式传递信息(直到最近的编辑工作一直很好,现在我无法弄清楚哪个更改搞砸了)。我已经使用Log输出来确定数据是否正确存储 - 使用getVariable()函数 - 但是稍后使用setVariable(input函数调用它时会返回null。有什么想法吗?

*注意,我最近开始将片段合并到我的项目中,在我的主类上扩展FragmentActivity而不是Activity。我认为这不会导致问题,但可能吗?如果是这样,最好的做法是传递全局变量信息,并使用片段吗?

代码示例:

Main Inherited class:

setVariable(input)

LogIn活动类(从Web获取登录信息,存储到全局变量中):

getVariable()

活动类,检查是否存储了keyA / B / etc:

public class MenuBarActivity extends FragmentActivity {
private String keyA;
private String keyB;
private int token;
private String Salt;
private long expires;

public String getKeyB() {
    return keyB;
}

public String getKeyA() {
    return keyA;
}

public int getTokenID() {
    return token;
}

public void setToken(int tkn) {
    token = tkn;
}

public void setKeyB(String kyB) {
    keyB = kyB;
}

public void setKeyA(String kyA) {
    keyA = kyA;
}

//Other common functions
}

1 个答案:

答案 0 :(得分:0)

这不起作用,因为您有两个不同的MenuBarActivity实例。这也不是在android中将数据从一个活动传递到另一个活动的方式。

如果要在另一个活动中使用来自一个活动的数据,则必须将它们添加到提供数据的活动中的意图,并在另一个活动中提取它们。有关详细信息,请参阅此处:How do I pass data between Activities in Android application?

如果您不想启动活动并使用意图发送数据,则必须将数据存储在某处,例如SharedPreferences并再次获取它们:How to use SharedPreferences in Android to store, fetch and edit values