所以我在应用程序清单中添加了一些东西,我看到我的应用程序标签上有一个警告:
在SDK版本23及更高版本上,您的应用数据将在应用安装时自动备份和恢复.考虑添加属性android:fullBackupContent以指定@xml资源,该资源配置要备份的文件.
然后我搜索了那个.显然,只有2个标签:<include>和<exclude>.我不想从备份中排除任何文件,因为我没有任何本地依赖文件,我不需要任何<include>标签
<include>:指定要备份的一组资源,而不是让系统默认备份应用程序中的所有数据.
当我看到如果我没有放任何<include>标签,那么系统将会back up all data in your app by default,这正是我想要的.
现在我有了这个问题:我应该添加backup_content.xml文件,但是因为默认设置是好的,所以是空的,或者根本不添加文件?(在这种情况下Android Studio会抱怨)
我已阅读吨像帖子的这一个,但他们只告诉你,你不应该添加依赖于项目的根build.gradle,这我知道.
我的情况是:我有很多模块都需要相同的库.所有这些,所以我需要将它们全部配置为具有相同的库.是否有可能以某种方式将其build.gradle添加到根或我已经为每个项目添加build.gradle了依赖项?
在阅读之前,这不是任何其他相关的Android Studio javadoc不能正常工作的副本,在我的情况下我可以看到它但只在源代码中,这意味着我无法在不进入类的情况下检查javadoc.这也很奇怪,因为它似乎只发生在某些类中,但它正在处理的类数量非常少.为了清楚起见,这里有一些截图.
首先,当它不工作时:

然后当它工作时:

有任何想法吗?请帮忙.谢谢!
我只是想知道obj = null在将它添加到数组后是否应该这样做.请注意,这是一个特殊情况,请参阅下文.
首先,让我们考虑A这样的类:
public class A {
public void doSomething(B object) {
// some code here
}
}
Run Code Online (Sandbox Code Playgroud)
和这样的类B:
public class B {
private final A a;
public B(A a) {
this.a = a;
}
public void aMethod() {
// Does something here
a.doSomething(this);
}
}
Run Code Online (Sandbox Code Playgroud)
到现在为止一切都还好.类型的对象B可以调用A的doSomething()方法来编辑基于一些数据在那里的对象.
现在让我们考虑以下情况:doSomething()将对象B添加到arraylist.现在我应该使用这些代码:
public void doSomething(B b) {
arrayList.add(b);
b = null;
}
// or
public void doSomething(B b) …Run Code Online (Sandbox Code Playgroud) 我想做一个普通的PreferenceActivity(旧样式,没有标题),但是使用片段而不使用addPreferencesFromResource(id)(因为弃用).
现在我把它放在我的onCreate:
getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferencesFragment()).commit();
Run Code Online (Sandbox Code Playgroud)
我PreferencesFragment看起来像这样:
public static class PreferencesFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
Run Code Online (Sandbox Code Playgroud)
显然我也实现了这个isValidFragment方法:
@Override
protected boolean isValidFragment(String fragmentName) {
return PreferencesFragment.class.getName().equals(fragmentName)
|| InnerFragment.class.getName().equals(fragmentName);
}
Run Code Online (Sandbox Code Playgroud)
它工作得很好.然而,当PreferenceScreen我在我的内心时有一个问题preferences.xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<!-- ... -->
<PreferenceScreen android:fragment="net.chaozspike.batterynotifier.SettingsActivity$InnerFragment"
android:summary="@string/settings_activity_prefs_display_night_mode_sum"
android:title="@string/settings_activity_prefs_display_night_mode" />
<!-- ... -->
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
我有以下问题:新的首选项屏幕显示在正常的屏幕之上,我知道这可能是因为我更换了默认设置R.id.content.截图:

但是我想在不使用已弃用的东西或标题的情况下解决此问题.这有可能实现吗?
android preferenceactivity preferencescreen preferencefragment
android ×4
java ×2
arrays ×1
backup ×1
build.gradle ×1
dependencies ×1
gradle ×1
javadoc ×1
memory-leaks ×1
null ×1
object ×1
xml ×1