2012-11-22 110 views
1

即时通讯新的Android应用程序开发。 我知道如何使用AndroidManifest.xml设置开始的Activity,但是我需要一种方法来在我选择开始的Activity之前先检查一些东西。设置在Android应用程序中的代码启动活动

我的问题: 我创建了一个loginActivity和一个mainActivity。 我想做以下事情:如果我登录,我会将标志设置为1,并在下一个应用程序启动时,我想直接显示mainActivity而不是登录名。

有没有办法做到这一点?我想创建一个启动画面,我可以在显示第一个活动之前检查是否已登录。

谢谢你,菲利普

更新的代码 - 工作:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // get preferences 
    SharedPreferences userDetails = getApplicationContext().getSharedPreferences("userdetails", 0); 
    String savedEmail = userDetails.getString("email", ""); 
    String savedPassword = userDetails.getString("password", ""); 
    Boolean savedRemember = userDetails.getBoolean("remember", false); 
    Boolean savedLogged = userDetails.getBoolean("logged", false); 

    // check if already logged in 
    if(savedLogged) { 
     // start the overview 
     Intent intent = new Intent(this, ActivityOverview.class); 
     startActivity(intent); 
     finish(); 
    } 
    else { 
     // initialize the form layout 
     setContentView(R.layout.activity_login); 

     // get views 
     this.email = (EditText)findViewById(R.id.editTextEmail); 
     this.password = (EditText)findViewById(R.id.editTextPassword); 
     this.remember = (CheckBox)findViewById(R.id.checkBoxRemember); 

     // set values to views 
     this.email.setText(savedEmail); 
     this.password.setText(savedPassword); 
     this.remember.setChecked(savedRemember); 
    } 
} 

回答

0

我在我的一个应用程序中有类似的东西。我让用户选择天气,它应该自动登录或不。这保存在SharedPreferences

当应用程序启动并在炫魅,你应该检查 - 之前setContentView(R.layout.activity_login);startActivity();后置finish();

if(savedLogged) { 

    Intent intent = new Intent(this, ActivityOverview.class); 
    startActivity(intent); 
    finish(); 
} 
setContentView(R.layout.activity_login); 
+0

谢谢,其工作完美:) –

+0

@ user1845792你非常欢迎! – Thomas

0

你并不真的需要一个启动画面。

当用户成功登录到您的应用程序时,请将SharedPreferences中的布尔标志设置为true。检查登录活动的onCreate()中是否存在此标志,如果是,请使用Intent启动主要活动。

0

你不需要显示你的活动。不知道您的代码流将会是什么,但您可以安全地使用LoginActivity启动。在你的onCreate()检查你是否已经登录(不管它对你意味着什么),如果是这样,立即启动MainActivity杀死LoginActivity与finish()

+0

感谢您的快速回答,我做到了知(见代码在我的第一篇文章)。它的工作正常,但是当我启动应用程序时,我会在新屏幕出现之前很短时间看到登录屏幕。活动布局获得初始化之前是否有事件? –

+0

在调用'setContentView()'之前做检查。也修复你的代码,使'完成();'被称为** AFTER **'startActivity();' –

+0

所以现在我完成了(见更新后的#1)。它的工作完美,但短时间内其他活动也是可见的,但我不认为有人会看到。谢谢 –

0

与闪屏一起会是一个好主意。启动loginActivity会显示一秒钟的登录屏幕。这将是不可取的。

+0

如果你有setContentView()之前的检查,那么不行... – Thomas

+0

我现在试过了,那是我的问题。它不好看,如果我开始我的登录屏幕.. –

相关问题