我有一个android应用程序,我用它在我的网站上注册用户。如果我的共享首选项文件显示没有注册用户信息,我的第一个任务就是注册一个用户。
如果我的应用程序有注册用户,我提供以下代码来简单地自动切换到“主页”活动:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.signin);
if( USERPREFERENCES.getString(USERPREFERENCES_USERMAIL, "") == null && USERPREFERENCES.getString(USERPREFERENCES_USERID, "") == null && USERPREFERENCES.getString(USERPREFERENCES_USERNAME, "") == null){
//setContentView(R.layout.signin);
Toast.makeText(SignIn.this, "testing...", Toast.LENGTH_LONG).show();
}else{
Intent intent = new Intent(SignIn.this, Confirmed.class);
startActivity(intent);
}
... other code因此,在我的默认活动signin.java中,应用程序将切换到已确认的活动,或者保持打开并显示登录活动。
我的问题是,当系统工作时,我切换到确认活动,我提供了一个注销onclick监听程序,如下所示:
signout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//USERPREFERENCES.cl
Toast.makeText(Confirmed.this, "signout responding!", Toast.LENGTH_LONG).show();
USERPREFERENCES.edit().clear().commit();
}
});它会响应并清除我所有的共享偏好变量。但是,当我使用菜单手动切换到登录活动时,我仍然会切换回已确认的活动。
即使我可以确认变量为空,也会发生这种情况。
我希望这对一些能给我提供帮助的人来说是个好消息。谢谢。
发布于 2011-05-30 22:58:50
这几乎不会是真的:
USERPREFERENCES.getString(USERPREFERENCES_USERMAIL, "") == null如果你用这个来代替呢?
if( USERPREFERENCES.getString(USERPREFERENCES_USERMAIL, null) == null && USERPREFERENCES.getString(USERPREFERENCES_USERID, null) == null && USERPREFERENCES.getString(USERPREFERENCES_USERNAME, null) == null){
//setContentView(R.layout.signin); TRY TO AVOID DOING THIS THING!!!!!
Toast.makeText(SignIn.this, "testing...", Toast.LENGTH_LONG).show();
}else...另外,作为一个建议...而不是在活动之间切换。如果您只创建一个Signing.java活动并在其布局中放置一个ViewFlipper,会发生什么情况呢?这样一来,你的应用程序不仅更快,而且更容易维护。
发布于 2011-05-30 23:09:51
这是因为当您切换回LoginActivity时,这将恢复而不是创建,这意味着您编写的inOnCreate登录代码将不会被调用,因为这次已调用覆盖程序OnResume,而不是onCreate。
因此,要么在onResume中重新编写这段代码,要么在进入第二个活动之前调用finish(),这样下次它就会调用onCreate()
发布于 2011-05-30 22:58:59
如果您导航回第一个活动,则不会再次调用onCreate (除非该活动因缺少资源而被销毁)。在onResume中移动身份验证码。
https://stackoverflow.com/questions/6177770
复制相似问题