[英]Showcaseview appear every time when fragment shown
I am trying to do use showcaseview in fragment. 我正在尝试使用fragmentview片段。 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? 我怎样才能解决这个问题?
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);
}
Use SharedPreference for this: 为此使用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;
}
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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.