2013-06-27 2 views
0

Мое приложение требует начальной настройки пользователя, когда приложение открыто пользователем. Он должен иметь возможность выполнить начальную настройку, которая будет определять, как приложение запускается. Для этого я использую sharedPreferences. То, что я делаю, просто, устанавливая contentView в зависимости от того, является ли логическое значение «true» или false ». Но вопрос в том, что происходит после i setContentView().SharedPreferences для начальной настройки пользователя

//Variables 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    //creating sharedpref file 
    PREFS_NAME = "MyPrefsFile"; 
    shPref = getSharedPreferences(PREFS_NAME, 0); 
    shPref.edit().putBoolean("my_first_time", true).commit(); 
    //checking if app's being launched for first time 
    if(shPref.getBoolean("my_first_time", true)) { 
     setContentView(R.layout.page_one); 
     //setting the shPref as false 
     shPref.edit().putBoolean("my_first_time", false).commit(); 
    } 
    //checking if app has been launched before 
    else if(shPref.getBoolean("my_first_time", false) && shprefchecker == 1) { 
     setContentView(R.layout.home_page); 
    } 
} 

Так что я хочу сделать, это ждать, пока пользователь, чтобы завершить установку, прежде чем я могу установить shPref как ложное. Я предполагаю, что после изменения макета в этой строке «setContentView (R.layout.page_one)», он автоматически установит shPref как false. Я хочу, чтобы приложение ничего не делало, пока пользователь не прошел начальную настройку (первый макет в начальной настройке - page_one.xml).

Я мог бы сбить с толку, но как бы я это сделал? Пожалуйста помоги. Все ответы приветствуются. Благодаря!

ответ

0

Я думаю, что это довольно прямо.

Вы можете установить логическое значение false на кнопку «Отправить кнопку начальной настройки».

На странице настроек должна быть кнопка, не так ли? Таким образом, будет гарантировано, что пользователь сначала завершит настройку.

В вашей второй деятельности, вы должны будете использовать:

shPref = getSharedPreferences(PREFS_NAME, MODE_WORLD_READABLE); 
SharedPreferences.Editor pref_editor = shPref.edit(); 
pref_editor.putBoolean("first_time", false); 
pref_editor.commit(); 
+0

Да, это имеет смысл. Но как бы установить boolean в false, если его часть целого другого класса? –

+0

Вы можете использовать общие настройки для всего приложения. Его общий –

+0

Но Im получает ошибку в моем втором java-файле, когда я использую эту строку кода в методе onCreate(): shPref.edit(). PutBoolean ("my_first_time", false) .commit(); он говорит: «shPref не может быть разрешен». Я извиняюсь за свои хромые ошибки, но это первый раз, когда я использовал SharedPreferences. –

0

Проблема, которую я вижу в вашем коде, что ваш код является то, что вы положили my_first_time истина всегда. Просто не определяйте его, если вы не определяете var в своем общем префиксе, он вернет значение по умолчанию, которое вы передадите в качестве второго параметра. Я буду править код:

Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    //creating sharedpref file 
    PREFS_NAME = "MyPrefsFile"; 
    shPref = getSharedPreferences(PREFS_NAME, 0); 
    //checking if app's being launched for first time 
    if(shPref.getBoolean("my_first_time", true)) { //my first time not defined, it will be true 
     setContentView(R.layout.page_one); 
     //setting the shPref as false 
     shPref.edit().putBoolean("my_first_time", false).commit(); //This line should go in your page_one activity when it ends, but when defined it will always go to home_page 
    } 
    //checking if app has been launched before 
    else if(shPref.getBoolean("my_first_time", false) && shprefchecker == 1) { 
     setContentView(R.layout.home_page); 
    } 
} 

Надеется, что это помогает :)

+0

Да, спасибо, большое спасибо! Но я получаю ту же проблему, о которой я расскажу ниже в комментариях другого ответа. : / –

0

Это довольно просто первое Вы должно проверить бушель получать разделяемых предпочтения пару ключей значения ли прошел пользователь через процесс установки, если не то вы можете начать настройку, и если да, вы можете пропустить операцию настройки