2015-04-06 55 views
0

我是新來的android開發,並嘗試做一個應用程序,其中第一次顯示屏幕並要求用戶設置密碼,並且在設置密碼後,該屏幕再也不會顯示。 我寫了一個基本的代碼實現這個,但是當在模擬器上運行我的應用程序時,同樣的設置屏幕會一次又一次地顯示出來。有人能指出原因嗎?OneTime設置屏幕Android錯誤

代碼:

package com.example.homeautomation.zigbeehomeauto; 

import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.view.View; 
import android.widget.EditText; 



public class SetupScreen extends ActionBarActivity { 
View v ; 
    public static final String PREFS_NAME = "MyPrefsFile"; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 


     SharedPreferences check = getSharedPreferences(PREFS_NAME, 0); 
     boolean hasLoggedIn = check.getBoolean("Name", false); 


     if (hasLoggedIn) { 
      Intent intent = new Intent(); 
      intent.setClass(SetupScreen.this, MainScreen.class); 
      startActivity(intent); 
      this.finish(); 
     } 
     else { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_setup_screen); 

     } 


    } 

     public void Send(View v) { 
      SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
      SharedPreferences.Editor editor = settings.edit(); 


     EditText text = (EditText) findViewById(R.id.editText); 
     String value = text.getText().toString(); 
     editor.putString("Name", "value"); 
     Intent intent = new Intent(); 
     intent.setClass(SetupScreen.this, MainScreen.class); 
     startActivity(intent); 
     this.finish(); 


    } 
    } 
+1

檢查logcat中的錯誤,並在這裏發佈。 – 2015-04-06 10:19:08

+0

你是否在清單文件中提到了你的活動? – 2015-04-06 10:20:47

+0

您應該首先顯示屏幕,將有關信息保存在持久性存儲e,g共享首選項中,並在加載主屏幕時檢查您是否已經完成了該操作。 – 2015-04-06 10:26:25

回答

0

一些函數調用無法進行,直到活動開始時,你可以打電話那邊getSharedPreferences(),而不是調用的onCreate(); 或者如果你想每次在onResume()中使用該值;

SharedPreferences settings; 

@Override 
protected void onResume() //or in onCreate() as per your needs 
{ 
    super.onResume(); 
    settings = getSharedPreferences(PREFS_NAME, 0); 
} 

希望這有助於!

+0

我編輯了代碼感謝,應用程序現在運行,但有一個問題,歡迎屏幕顯示每當我在模擬器中運行它。 – 2015-04-06 12:46:33

+0

你根本沒有設置內容視圖。比最新的問題?它是否顯示你說的白色碎片? – Harry 2015-04-06 13:05:40

+0

上一個問題已解決,但在新代碼中,安裝屏幕應僅顯示一次,但在應用程序的每次啓動時都會顯示。 – 2015-04-06 14:10:08