繁体   English   中英

每次显示片段时都会出现Showcaseview

[英]Showcaseview appear every time when fragment shown

我正在尝试使用fragmentview片段。 它可以工作,但每个片段的开头都会不断出现。 我想在第一次打开时只显示一次,而不再显示。 有我的代码:

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;
    }
} 

我怎样才能解决这个问题?

使用静态或共享首选项布尔值

    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);
    }

为此使用SharedPreference:

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;
}

更换:

new ShowcaseView.Builder(getActivity())
            .setTarget(new ViewTarget(view.findViewById(R.id.map_dashBoard)))
            .setContentTitle(R.string.map_context)
            .build();

通过使用共享首选项:

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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM