我创建了一个包含公共变量和函数的类,并且由与我的应用程序中的不同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
}
答案 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