gpt4 book ai didi

java - 以编程方式清除应用程序数据 Android

转载 作者:行者123 更新时间:2023-11-29 21:09:14 25 4
gpt4 key购买 nike

我有一个带有 SharedPreferences 的应用程序。我想在单击按钮时清除完整的应用程序数据,以便应用程序像第一次安装时一样重新启动。

我试过:

清除数据.java

public class ClearData extends Application 
{
private static ClearData instance;

@Override
public void onCreate() {
super.onCreate();
instance = this;
}

public static ClearData getInstance() {
return instance;
}

public void clearApplicationData() {
File cache = getCacheDir();
File appDir = new File(cache.getParent());
if (appDir.exists()) {
String[] children = appDir.list();
for (String s : children) {
if (!s.equals("lib")) {
deleteDir(new File(appDir, s));
Log.i("TAG", "**************** File /data/data/mypackage/" + s + " DELETED *******************");
}
}
}
}

public static boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
}

return dir.delete();
}
}

主.java

btnLogout.setOnclickListener(new View.OnClickListner(
{
@Override
public void onClick(View v)
{
ClearData.getInstance().clearApplicationData(); // Gettin error
}
});

但是我在上面一行得到了一个 NullPointerException

最佳答案

不要使用扩展应用程序的类,声明

clearApplicationData(Context mContext)

代替

clearApplicationData()

File cache = mContext.getCacheDir();  

代替

File cache = getCacheDir(); 

在主要 Activity 本身。然后调用

clearApplicationData(getBaseContext());  

单击按钮 btnLogout。希望这会有所帮助。

关于java - 以编程方式清除应用程序数据 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23493030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com