2016-02-03 3 views
0

Я пытаюсь использовать showcaseview в фрагменте. Он работает, но он постоянно появляется каждое открытие фрагмента. Я хочу, чтобы он показывался один раз при первом открытии и никогда не показывался снова. Есть мой код:Showcaseview появляется каждый раз, когда показан фрагмент

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

Как я могу это исправить?

+1

use shared preference boolean – Madhur

ответ

0

Используйте статический или совместно предпочтение булево

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

Я пытаюсь статично уже, но не работает, я попробую использовать общий доступ, я думаю, что это сработает. Спасибо за Ваш ответ. – mesopotamia

+0

Я пытаюсь использовать общие настройки, но я получаю ошибку в контексте. Что я должен заменить контекстом? if (! getDefaults («показано», контекст))? – mesopotamia

+0

getApplicationContext() или getActivity() – Madhur

-1

Заменить:

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

с помощью 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(); 
} 
0

Используйте 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; 
} 
+0

downvoter care to explain –

Смежные вопросы