【问题标题】:Showcaseview appear every time when fragment shown每次显示片段时都会出现 Showcaseview
【发布时间】:2016-02-03 09:37:32
【问题描述】:

我正在尝试在片段中使用展示视图。它有效,但它不断出现在每个片段的开头。我希望它在第一次打开时显示一次,并且不再显示。有我的代码:

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

我该如何解决这个问题?

【问题讨论】:

  • 使用共享偏好布尔值

标签: android android-fragments showcaseview


【解决方案1】:

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

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

【讨论】:

  • 我已经尝试过静态但不起作用我会尝试共享pereference 我认为它会起作用。谢谢你的回答。
  • 我正在尝试共享首选项,但在上下文中出现错误。我应该用上下文替换什么? if(!getDefaults("shown",context)) ??
  • getApplicationContext() 或 getActivity()
  • getApplicationContext 没有出现,但 getActivity 有效。非常感谢。
  • 直到现在我还没有足够的投票声望,但我现在已经投票了 :)
【解决方案2】:

为此使用 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;
}

【讨论】:

    【解决方案3】:

    替换:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多