2016-02-02 2 views
0

Большое спасибо за просмотр здесь, я работаю над приложением для школы, и у меня возникла другая проблема. Основная идея приложения - отслеживать ваши калории, и я бы хотел, чтобы он сохранил калории, поэтому, когда приложение закрыто, оно все равно их помнит. Я был занят какое-то время, пытаясь использовать SavedPreferences, но я все время получаю ошибки. Я надеялся, что кто-то поможет мне в этом.Android Studio Общие предпочтения

public class CaloriesEaten extends Fragment { 

private Context mContext; 
private static final String ARG_PARAM1 = "param1"; 
private static final String ARG_PARAM2 = "param2"; 
private static EditText caleaten; 
private static EditText calalready; 
private static TextView caltotal; 
private static Button btnClick; 
private EditText editText; 
//private String calalreadystring = calalready.getText().toString(); 
//int CalCount = Integer.parseInt(calalreadystring); 
Context context = getActivity(); 
SharedPreferences pref = context.getSharedPreferences("MyCalories", Context.MODE_PRIVATE); 

// TODO: Rename and change types of parameters 
private String mParam1; 
private String mParam2; 

private OnFragmentInteractionListener mListener; 

public CaloriesEaten() { 
    // Required empty public constructor 
} 

public static CaloriesEaten newInstance(String param1, String param2) { 
    CaloriesEaten fragment = new CaloriesEaten(); 
    Bundle args = new Bundle(); 
    args.putString(ARG_PARAM1, param1); 
    args.putString(ARG_PARAM2, param2); 
    fragment.setArguments(args); 
    return fragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getArguments() != null) { 
     mParam1 = getArguments().getString(ARG_PARAM1); 
     mParam2 = getArguments().getString(ARG_PARAM2); 
    } 
    String keki = pref.getString("CalorieCounter", ""); 
    editText.setText(keki); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) {  View view = inflater.inflate(R.layout.fragment_calories_eaten, 
     container, false); 


    caleaten = (EditText) view.findViewById(R.id.CalorieInput); 
    calalready = (EditText) view.findViewById(R.id.Cals); 
    caltotal = (TextView) view.findViewById(R.id.CalNumber); 
    btnClick = (Button)view.findViewById(R.id.addcalories); 
    btnClick.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      buttonClicked(v); 
     } 
    }); 

    return view; 
} 
public void buttonClicked (View view) { 

    int x = Integer.parseInt(caleaten.getText().toString()); 

    int y = Integer.parseInt(calalready.getText().toString()); 

    int total = x + y; 

    caltotal.setText(Integer.toString(total)); 
    calalready.setText(Integer.toString(total)); 
    caleaten.setText(""); 
    SharedPreferences.Editor edit = pref.edit(); 
    String calalreadystring = calalready.getText().toString(); 
    int CalCount = Integer.parseInt(calalreadystring); 
    edit.putInt("CalorieCounter", CalCount); 
    edit.commit(); 


} 
public void onButtonPressed(Uri uri) { 
    if (mListener != null) { 
     mListener.onFragmentInteraction(uri); 
    } 
} 

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    if (context instanceof OnFragmentInteractionListener) { 
     mListener = (OnFragmentInteractionListener) context; 
    } else { 
     throw new RuntimeException(context.toString() 
       + " must implement OnFragmentInteractionListener"); 
    } 
} 

@Override 
public void onDetach() { 
    super.onDetach(); 
    mListener = null; 
} 

public interface OnFragmentInteractionListener { 
    // TODO: Update argument type and name 
    void onFragmentInteraction(Uri uri); 
} 

}

Я, вероятно, делать много очевидной немой вещи, но я действительно не могу понять это.

Большое спасибо!

+3

Что ошибка вы получаете? – Pavya

ответ

1

объявить SharedPreferences глобально и инициализировать внутри onCreateView Methode,

например:

Context context; 
SharedPreferences pref; 
....... 
... 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) {  View view = inflater.inflate(R.layout.fragment_calories_eaten, 
     container, false); 

context = getActivity(); 
pref = context.getSharedPreferences("MyCalories", Context.MODE_PRIVATE); 

............. 
.... 
} 
+0

Я думаю, что это исправит вашу проблему :) :) –

+0

Большое вам спасибо, исправлено! – Kayaz

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