Reputation: 393
I am trying to do use showcaseview in fragment. It works but it is continuously appears every opening of fragment. I want to it show once when opening first time and never show again. There is my code :
public class Map extends Fragment {
public Map() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
private MapView mMapView;
private GoogleMap mGoogleMap;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view= inflater.inflate(R.layout.fragment_map, container, false);
mMapView = (MapView) view.findViewById(R.id.map_dashBoard);
mMapView.onCreate(savedInstanceState);
mMapView.onResume();
try {
MapsInitializer.initialize(getActivity().getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}
mGoogleMap = mMapView.getMap();
new ShowcaseView.Builder(getActivity())
.setTarget(new ViewTarget(view.findViewById(R.id.map_dashBoard)))
.setContentTitle(R.string.map_context)
.build();
return view;
}
}
How can i fix this?
Upvotes: 0
Views: 326
Reputation: 3353
Use static or shared preference boolean
if(!getDefaults("shown",getActivity())){
new ShowcaseView.Builder(getActivity())
.setTarget(new ViewTarget(view.findViewById(R.id.map_dashBoard)))
.setContentTitle(R.string.map_context)
.build();
setDefaults("shown",true,getActivity())
}
private void setDefaults(String key, boolean value, Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(key, value);
editor.commit();
}
private boolean getDefaults(String key, Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getBoolean(key, false);
}
Upvotes: 1
Reputation: 12379
Use SharedPreference for this:
if(!LoadPreferencesBoolean(context,"firsttime",false)){
new ShowcaseView.Builder(getActivity())
.setTarget(new ViewTarget(view.findViewById(R.id.map_dashBoard)))
.setContentTitle(R.string.map_context)
.build();
SavePreferences(context,"firsttime",true)
}
public void SavePreferences(Context context,String key, Boolean value) {
SharedPreferences.Editor editor =PreferenceManager.getDefaultSharedPreferences(context).edit();
editor.putBoolean(key, value);
editor.commit();
}
public boolean LoadPreferencesBoolean(Context context,String key, Boolean defaul) {
boolean data = PreferenceManager.getDefaultSharedPreferences(context).getBoolean(key, defaul);
return data;
}
Upvotes: 1
Reputation: 407
Replace:
new ShowcaseView.Builder(getActivity())
.setTarget(new ViewTarget(view.findViewById(R.id.map_dashBoard)))
.setContentTitle(R.string.map_context)
.build();
By Using Sharedprefrences:
SharedPreferences prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE);
boolean isShadowShown = prefs.getBoolean("shadowView", false);
if(isShadowShown){
new ShowcaseView.Builder(getActivity())
.setTarget(new ViewTarget(view.findViewById(R.id.map_dashBoard)))
.setContentTitle(R.string.map_context)
.build();
SharedPreferences.Editor editor = getSharedPreferences("MyPrefs", MODE_PRIVATE).edit()
editor.putBoolean("shadowView", true);
editor.commit();
}
Upvotes: -1