2015-04-06 3 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 и разместите здесь. –

+0

Вы упомянули свою активность в файле манифеста? –

+0

Сначала вы должны отобразить экран, сохранить информацию о том, что вы хотите сохранить в сохраненных хранилищах, а также при загрузке главного экрана, проверьте, сделали ли вы это или нет. –

ответ

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

Я отредактировал код, спасибо, теперь приложение запускается, но есть проблема, что экран приветствия отображается каждый раз, когда я запускаю его в эмуляторе. –

+0

Вы вообще не настраиваете контент. Чем проблема? Означает ли это, что вы говорите? – Harry

+0

предыдущая проблема была решена, но в новом коде экран установки должен отображаться только один раз, но он отображается в каждом начале приложения. –

Смежные вопросы