java - Sharedpreferences 在 onCreateOptionsMenu 中不起作用

标签 java android sharedpreferences showcaseview

我尝试显示指向菜单项的展示 View ,但此共享首选项只是在我的应用程序关闭之前保存,在我关闭我的应用程序并再次打开后展示 View 将再次出现。我如何才能仅在第一次显示展示 View ?

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_contact, menu);

    pref = getSharedPreferences(String.valueOf(getApplicationContext()), Context.MODE_PRIVATE);
    editor = pref.edit();
    if (pref.getBoolean("isFirstTime", true)) {   // default true for first time
        editor.putBoolean("isFirstTime", false).commit(); // update  so it will false ever after
        new Handler().postDelayed(
                new Runnable() {
                    @Override
                    public void run() {
                        mFancyShowCaseView = new FancyShowCaseView.Builder(ContactTabActivity.this)
                                .focusOn(findViewById(R.id.item_sync)) // ActionBar menu item id
                                .focusCircleRadiusFactor(1.5)
                                .focusBorderSize(15)
                                .focusBorderColor(Color.parseColor("#FFA64D"))
                                .customView(R.layout.case_view_sync, new OnViewInflateListener() {
                                    @Override
                                    public void onViewInflated(@NonNull View view) {
                                        view.findViewById(R.id.btnOke).setOnClickListener(new View.OnClickListener() {
                                            @Override
                                            public void onClick(View view) {
                                                mFancyShowCaseView.removeView();
                                            }
                                        });
                                    }
                                }).closeOnTouch(false)
                                .build();
                        mFancyShowCaseView.show();
                    }
                }, 50
        );
    }
    editor.commit();
    return super.onCreateOptionsMenu(menu);
}

最佳答案

代替

pref = getSharedPreferences(String.valueOf(getApplicationContext()), Context.MODE_PRIVATE);

使用

pref = getSharedPreferences("First_tym_check",Context.MODE_PRIVATE);

这是因为:-

String.valueOf(getApplicationContext()) 这个字符串值不是 CONSTANT

如果您重新启动应用程序,您会注意到该值会发生显着变化,例如:-

  • (yourPackageName).@521c1 , 下次 ,
  • (yourPackageName).@631d1 ,

So, the string value is different every time .

关于java - Sharedpreferences 在 onCreateOptionsMenu 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49318619/

相关文章:

java - 为 hashMap 中的每个键调用 setter

Android L setEnterTransition 不工作

android - 如果我有 onTouchListener 除非滚动,否则 OnItemClickListener 不会触发?

android - SharedPreferences在android程序中产生强制关闭

android从java设置默认首选项

java - 解析 XML 最快的方法是什么?

java - 有没有办法将输入从文件重定向到 Netbeans 中的标准输入?

java - 捕获字符串异常

java - 如何获取手机的通话状态

java - 保存整数的共享首选项