首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android共享首选项条件活动切换

Android共享首选项条件活动切换
EN

Stack Overflow用户
提问于 2011-05-30 22:52:12
回答 3查看 898关注 0票数 1

我有一个android应用程序,我用它在我的网站上注册用户。如果我的共享首选项文件显示没有注册用户信息,我的第一个任务就是注册一个用户。

如果我的应用程序有注册用户,我提供以下代码来简单地自动切换到“主页”活动:

代码语言:javascript
复制
    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监听程序,如下所示:

代码语言:javascript
复制
 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();
            }
        });

它会响应并清除我所有的共享偏好变量。但是,当我使用菜单手动切换到登录活动时,我仍然会切换回已确认的活动。

即使我可以确认变量为空,也会发生这种情况。

我希望这对一些能给我提供帮助的人来说是个好消息。谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-30 22:58:50

这几乎不会是真的:

代码语言:javascript
复制
USERPREFERENCES.getString(USERPREFERENCES_USERMAIL, "")  == null

如果你用这个来代替呢?

代码语言:javascript
复制
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,会发生什么情况呢?这样一来,你的应用程序不仅更快,而且更容易维护。

票数 2
EN

Stack Overflow用户

发布于 2011-05-30 23:09:51

这是因为当您切换回LoginActivity时,这将恢复而不是创建,这意味着您编写的inOnCreate登录代码将不会被调用,因为这次已调用覆盖程序OnResume,而不是onCreate。

因此,要么在onResume中重新编写这段代码,要么在进入第二个活动之前调用finish(),这样下次它就会调用onCreate()

票数 2
EN

Stack Overflow用户

发布于 2011-05-30 22:58:59

如果您导航回第一个活动,则不会再次调用onCreate (除非该活动因缺少资源而被销毁)。在onResume中移动身份验证码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6177770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档