Reputation: 193
I have a getSharedPreferences on my fragment1, and it will load int from previous fragment.
public void backButtonWasPressed() {
settings = getActivity().getSharedPreferences("MyPref", 0);
.....
}
i call fragment1.backButtonWasPressed() and give me force close and error message nullpointerexception on "settings = getActivity().getSharedPreferences("MyPref", 0);"
My Logcat :
08-28 16:52:21.828: E/AndroidRuntime(4412): FATAL EXCEPTION: main
08-28 16:52:21.828: E/AndroidRuntime(4412): java.lang.NullPointerException
08-28 16:52:21.828: E/AndroidRuntime(4412): at pkh.apps.Fragment1.backButtonWasPressed(Fragment1.java:324)
08-28 16:52:21.828: E/AndroidRuntime(4412): at pkh.apps.KajianUtama.onBackPressed(KajianUtama.java:71)
08-28 16:52:21.828: E/AndroidRuntime(4412): at android.app.Activity.onKeyUp(Activity.java:2131)
Line 324 on Fragment1 is : settings = getActivity().getSharedPreferences("MyPref", 0);
My Main SherlockFragmentActivity :
public class KajianUtama extends SherlockFragmentActivity implements OnItemClickListener {
....
@Override
public void onBackPressed() {
super.onBackPressed();
FragmentManager fm = getSupportFragmentManager();
fragment1 = (Fragment1) fm.findFragmentById(R.id.content_frame);
fragment1.backButtonWasPressed();
}
.....
}
My Fragment1 :
public class Fragment1 extends SherlockFragment{
....
public void backButtonWasPressed() {
settings = getActivity().getSharedPreferences("MyPref", 0);
c = settings.getInt("numRun",0);
Log.d("back pressed", "c " + c);
}
...
}
Please give me a solution to solve this problem. Thank you.
Upvotes: 1
Views: 993
Reputation: 3215
Check if the name of your Preference is the same that you use to save it, a best practice is to save a constant PREFERENCE_NAME="myPreferenceName"
and then use that constant instead of the string.
EDIT
Try in this way
@Override
public void onBackPressed() {
super.onBackPressed();
FragmentManager fm = getSupportFragmentManager();
fragment1 = (Fragment1) fm.findFragmentById(R.id.content_frame);
fragment1.backButtonWasPressed(this);
}
and then
public void backButtonWasPressed(Context context) {
settings = context.getSharedPreferences("MyPref", 0);
c = settings.getInt("numRun",0);
Log.d("back pressed", "c " + c);
}
Pass the context to the method
Upvotes: 2