2013-12-15 3 views
1

Привет Я пытаюсь написать код для постоянных/общих настроек. Я успешно сохраняю данные в хранилище постоянного хранения. Но каждый раз, когда я запускаю свое приложение, он принимает меня на хранение. У меня есть два основных вида деятельности и вторая деятельность. В основном я сохраняю данные, а второй - показываю сохраненные данные. То, что я хочу здесь, - это когда данные хранятся в первый раз, когда они должны непосредственно переходить к второму действию. Я хочу добиться чего-то вроде процесса регистрации watsapp, вы впервые вводите свой номер и контакт и никогда не запрашиваете его, пока не удалите приложение или не очистите вручную данные. как я могу это сделать. Ниже приведен код, который я попробовал.persistance/shared storage in android

public class MainActivity extends Activity { 

    public static final String PREFS_NAME = "MSISDN and PIN"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     int id = settings.getInt("PREFS_NAME", 0); 
     if (id > 0) { 
      Intent second = new Intent(getApplicationContext(), seond.class); 
      startActivity(second); 
     } 
     final EditText name = (EditText) findViewById(R.id.editText1); 
     final EditText email = (EditText) findViewById(R.id.editText2); 
     Button btn = (Button) findViewById(R.id.btnsaveprefs); 
     btn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       SharedPreferences.Editor editor = settings.edit(); 
       editor.putString("MSISDN", name.getText().toString()); 
       editor.putString("PIN", email.getText().toString()); 
       editor.commit(); 
       Intent second = new Intent(getApplicationContext(), seond.class); 
       startActivity(second); 
      } 
     }); 
    } 
} 

и вторая активность у меня есть

public class seond extends Activity { 

    public static final String PREFS_NAME = "MSISDN and PIN"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.second); 
     TextView tvname = (TextView) findViewById(R.id.uname); 
     TextView tvemail = (TextView) findViewById(R.id.uemail); 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     tvname.setText(settings.getString("MSISDN", "Unknown")); 
     tvemail.setText(settings.getString("PIN", "Email default")); 
    } 
} 
+0

где вы задаете имя прив. на котором вы проверяете, если условие –

+0

@nitesh goel проверить отредактированный вопрос –

+0

где вы устанавливаете PREFS_NAME ?? –

ответ

0

Я думаю, ваша проблема лежит здесь:

int id = settings.getInt("PREFS_NAME", 0); 

Вы получите значение «PREFS_NAME», а затем проверить, если это > 0, но вы никогда сохранить значение для ключа PREFS_NAME. Я думаю, вы хотите использовать PIN или MSISDN здесь?

+0

не уверен, в чем ошибка? я пытаюсь, но не могу это исправить. –

0

Это правильный способ сделать это:

public class MainActivity extends Activity { 

    public static final String PREFS_NAME = "MSISDN and PIN"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     int id = settings.getInt("PREFS_NAME", 0); 
     if (id > 0) { 
      Intent second = new Intent(getApplicationContext(), Second.class); 
      startActivity(second); 
     } 
     final EditText name = (EditText) findViewById(R.id.editText1); 
     final EditText email = (EditText) findViewById(R.id.editText2); 
     Button btn = (Button) findViewById(R.id.btnsaveprefs); 
     btn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       SharedPreferences.Editor editor = settings.edit(); 
       editor.putString("MSISDN", name.getText().toString()); 
       editor.putString("PIN", email.getText().toString()); 
       editors.putInt("PREFS_NAME", 1); // id = 1 
       editor.commit(); 
       Intent second=new Intent(getApplicationContext(), Second.class); 
       startActivity(second); 
      } 
     }); 
    } 
} 

public class Second extends Activity { // classes begin with CAPITAL 

    public static final String PREFS_NAME = "MSISDN and PIN"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.second); 
     TextView tvname = (TextView) findViewById(R.id.uname); 
     TextView tvemail = (TextView) findViewById(R.id.uemail); 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     tvname.setText(settings.getString("MSISDN", "Unknown")); 
     tvemail.setText(settings.getString("PIN", "Email default")); 
    } 
} 

Примечание Вы не установили идентификатор, как сказано в других ответах. Ваш стиль кодирования является плохим, кстати: НИКОГДА не начинайте имя класса с строчными буквами, а также почему id int? Вы используете его как boolean. Почему вы сохраняете электронное письмо в предпочтении под названием PIN и имя в предпочтении под названием MSISDN ???