我有一个名为currentFile的File对象。当currentFile已更改并且用户尝试先打开而不保存的新文件时,将显示“保存”对话框,如果单击“是”,则会保存currentFile。我遇到的问题是,当我启动一个新的Activity并按下Android后退按钮时,currentFile设置为null,因此更改文件并尝试打开一个新文件会导致NullPointerException。如何在所有活动中持久保存currentFile?

最佳答案

有几种方法可以做到这一点,这取决于您要做什么,这应该使您的需求达到最佳平衡,一种方法是使用额外功能将变量值传递给另一个活动。

Bundle extras = new Bundle();
extras.putString(key, value);
Intent intent = new Intent("your.activity");
intent.putExtras(extras);
startActivity(intent);


另一种方法是在应用程序上下文中设置一个变量,创建一个从Application扩展的类,您将可以使用以下方法从任何活动中获取该引用

YorApplicationClass app = (YorApplicationClass)getApplication();
app.getYourVariable();


我最后想到的是使用SharedPreferences,将变量存储为键/值对,可用于任何活动...

            SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
            Editor edit = pref.edit();
            edit.putString(key, value);
            edit.commit();

            //Any activity
            SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
            pref.getString(key, defValue);


问候!

10-05 21:25