java - Android 使用共享首选项来检查首次运行

标签 java android android-fragments android-intent android-sharedpreferences

您好,我正在尝试检测我的应用程序是否是第一次打开。如果有,我需要运行一个 Activity ,一旦第二次打开它就不应该再次显示。

这是我的代码:

fragment :

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Intent intent = new Intent(getActivity(), TutorialFeaturedActivity.class);
    //startActivity(intent);

    SharedPreferences settings = this.getActivity().getSharedPreferences(PREFS_NAME, 0); // Get preferences file (0 = no option flags set)
    boolean firstRun = settings.getBoolean("firstRun", true); // Is it first run? If not specified, use "true"

    if(firstRun) {
        Log.w("onCreate: ","first time" );
        Intent intent = new Intent(getActivity(), TutorialFeaturedActivity.class);
        startActivity(intent);

        SharedPreferences.Editor editor = settings.edit(); // Open the editor for our settings
        editor.putBoolean("firstRun", false); // It is no longer the first run
        editor.apply(); // Save all changed settings
    } else {
        Log.w("onCreate: ","second time");
        Intent intent = new Intent(getActivity(), MainActivity.class);
        startActivity(intent);
    }

    getSpecials();
}

但它所做的只是启动 Activity ,当我再次启动它时,它卡住在白屏中,但检查它显示的日志,就像 else 语句不断地一遍又一遍地运行一样。我对 Android 相当陌生,因此我们将不胜感激一些帮助或建议

最佳答案

@Override
public void onCreate(Bundle savedInstanceState)
 {
    super.onCreate(savedInstanceState);
    SharedPreferences pref = YourActivityName.this.getSharedPreferences(PREFS_NAME,0);
    SharedPreferences.Editor editor= pref.edit();
    boolean firstRun = pref.getBoolean("firstRun", true); 
    if(firstRun)
    {
        Log.i("onCreate: ","first time" );
        editor.putBoolean("firstRun",false);
        editor.commit();
        Intent intent = new Intent(getActivity(), TutorialFeaturedActivity.class);
        startActivity(intent);
    }
    else
    {
        Log.i("onCreate: ","second time");
        Intent intent = new Intent(getActivity(), MainActivity.class);
        startActivity(intent);

    }
   // getSpecials();
}

关于java - Android 使用共享首选项来检查首次运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44131469/

相关文章:

java - 删除 ArrayList 中的元素时出现 ConcurrentModificationException [使用 iterator.remove()]

java - 在使用 3 个不同的数字后,如何修改我的程序以继续查找适用的数字?

android - Room Persistence 库中的 HashMap

android - 使用动画删除 fragment

java - 如何使用外部文件夹和 Jars 创建 Jar 文件

java - 春假服务

android - Android 上使用 Wi-Fi Direct 的客户端/对等通信

android - Gitignore 不会忽略文件夹 android,react native

xml - 将片段中的布局项目约束到主事件底部栏导航的顶部?

android - 在不同 fragment 之间导航时,BottomSheet 不会隐藏