mesopotamia
mesopotamia

Reputation: 393

Showcaseview appear every time when fragment shown

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

Answers (3)

Madhur
Madhur

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

JAAD
JAAD

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

Gagan Sethi
Gagan Sethi

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

Related Questions