2012-11-22 162 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

我現在試過了,那是我的問題。它不好看,如果我開始我的登錄屏幕.. –

相關問題