2016-07-28 5 views
-1

У меня есть редактируемый текст ввода для ввода текста, который я хочу поместить в предыдущий ввод пользователя с использованием общих настроек (для первого ввода). Я написал следующий код, но он закроет. в чем проблема??с использованием общих настроек для извлечения данных

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

//setting text for editText 
age_editText.setText(my_prefs.getInt("age_value", 0) + ""); //when i delete this part, it doesn't force close 

btn_calculate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
       try { 
        Int age_value = Integer.parseInt(age_editText.getText().toString()); 
        //shared preferences 
        sharedPreferences my_prefs = getActivity().getPreferences(Context.MODE_PRIVATE); 
        SharedPreferences.Editor editor = my_prefs.edit(); 
        editor.putInt("age_value", age_value); 
        editor_bmi.commit(); 

       } catch (Exception e) { 
        Toast.makeText(getContext(), getString(R.string.please_fill_all_inputs), Toast.LENGTH_LONG).show(); 
       } 
     } 
    }); 
+2

опубликовать журнал кошачьего сообщения об ошибке – Arshak

ответ

0

Изменить

sharedPreferences my_prefs = getActivity().getPreferences(Context.MODE_PRIVATE); 

в

sharedPreferences my_prefs = getActivity().getSharedPreferences("my_pref", Context.MODE_PRIVATE); 

и написать это выше

age_editText.setText(my_prefs.getInt("age_value", 0) + ""); 

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

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    sharedPreferences my_prefs getActivity().getSharedPreferences("my_pref", Context.MODE_PRIVATE); 
    age_editText.setText(my_prefs.getInt("age_value", 0) + ""); //when i delete this part, it doesn't force close 

    btn_calculate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      try { 

       Int age_value = Integer.parseInt(age_editText.getText().toString()); 

       SharedPreferences.Editor editor = my_prefs.edit(); 
       editor.putInt("age_value", age_value); 
       editor_bmi.commit(); 

      } catch (Exception e) { 
       Toast.makeText(getContext(), getString(R.string.please_fill_all_inputs), Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 
} 
+1

'sharedPreferences my_prefs = getActivity(). getSharedPreferences ("my_pref", Context.MODE_PRIVATE); ' Вы пропустили' = 'для создания объекта. –

1

Вы должны использовать getSharedPreferences() вместо getPreferences(), как показано ниже.

SharedPreferences sharedPreferences = getSharedPreferences("name", MODE_PRIVATE); 

Примечание:getPreferences() и getSharedPreferences() два различных метода, которые возвращают различные объекты предпочтений.

0

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

public void saveAge(int age_value) { 
     SharedPreferences pre = getSharedPreferences("my_age", MODE_PRIVATE); 
     SharedPreferences.Editor editor = pre.edit(); 
     editor.putInt("age_value", age_value); 
     editor.commit(); 
    } 

И когда вы хотите, чтобы ваш возраст, используйте:

public int readAge() { 
     SharedPreferences pre = getSharedPreferences("my_age", MODE_PRIVATE); 
     int age = pre.getInt("age_value", 0); 
     return age; 
    }