Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AppCompativePreferenceActivity和SettingActivity的区别是什么?_Java_Android_Android Studio_Android Preferences_Android Settings - Fatal编程技术网

Java AppCompativePreferenceActivity和SettingActivity的区别是什么?

Java AppCompativePreferenceActivity和SettingActivity的区别是什么?,java,android,android-studio,android-preferences,android-settings,Java,Android,Android Studio,Android Preferences,Android Settings,我在我的应用程序上添加了SettingActivity,我得到了自动生成的java文件appcompatipreferenceactivity.java和SettingsActivity.java 两者有什么区别?我看到了下面的链接,但没有讨论 我不知道在哪里编码 看来我比赛迟到了,但无论如何。希望这能有所帮助 1。在哪里放置代码(答案) SettingsActivity.java 不要弄乱AppCompativePreferenceActivity.java。您想要更改的每件事情都应该在se

我在我的应用程序上添加了
SettingActivity
,我得到了自动生成的java文件
appcompatipreferenceactivity.java
SettingsActivity.java

两者有什么区别?我看到了下面的链接,但没有讨论


我不知道在哪里编码

看来我比赛迟到了,但无论如何。希望这能有所帮助

1。在哪里放置代码(答案)

SettingsActivity.java

不要弄乱AppCompativePreferenceActivity.java。您想要更改的每件事情都应该在setingsactivity.java类中进行编码

2.appcompatipreferenceactivity.java是什么(答案)

使用设置活动时,要创建的类如下所示:

public class SettingsActivity extends PreferenceActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }
}
如果我们想支持我们使用的Android的更高版本

public class SettingsActivity extends AppCompatPreferenceActivity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
        }
    }

我想您已经看到了这个库android-support-v4、android-support-v7等等,它们都是为了支持更高版本的SDK(例如版本超过4、7等等)。这个类就是这样。

看,不需要创建general_pref.xml如果您想要单页设置,我已经创建了一些东西让您更好地理解(应该适合您):

res/xml/preferences.xml

编辑

*

这就是Tablet中默认设置活动的外观

*

在电话里

所有更改后,您的平板电脑设置将与手机设置相同, 现在设置看起来像一个长列表,而不是标题, 你会有分类。如你们所见,在最后一张图片中,我们看到了 系统设置


两者的区别是什么?
前者也与较旧的操作系统版本兼容。@HrundiV.Bakshi-您的意思是设置活动适用于较旧的操作系统,AppCompativePreference适用于API我的意思是设置活动适用于较新的操作系统。我应该看到两者的代码。我仍然在使用Eclipse,目标是API级别18(我不喜欢Android Studio和API级别19+)FARID-我可以删除pref_头和pref_notifications.xml吗?并创建一个pref_general.xml。谢谢您,但我的问题是如何去掉作为默认值加载的pref_头。我创建了一个SettingsActivity,即提供了模板的SettingsActivity,它自动生成AppCompatPrefences。将您的默认SttingsActivity.java替换为post中的一个,将preferences.xml替换为post中的一个,然后删除所有其他默认pref\uz。。。xml,包括pref_header.xml。这应该行得通。(如果我明白你的意思)最后一个问题:)谢谢你的帮助和信息-如果我删除pref_header.xml-它说它是用于平板电脑的。编辑后查看上面的答案。谢谢,我决定不选择AS提供的模板。我手动创建了一个。:)
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory
        android:title="pref_title_notifications"
        android:key="pref_category_notifications_key">
        <CheckBoxPreference
            android:defaultValue="false"
            android:key="notifications_on_off_key"
            android:title="pref_title_breaking_news_notification"/>

        <CheckBoxPreference
            android:defaultValue="true"
            android:key="notifications_sound_on_off_key"
            android:title="pref_title_enable_notifications_sound"/>
    </PreferenceCategory>

    <PreferenceCategory
        android:title="pref_title_data"
        android:key="pref_category_data_key">
        <CheckBoxPreference
            android:defaultValue="true"
            android:key="pref_images_load_on_off_key"
            android:title="pref_title_load_images_on_mobile_data"/>
    </PreferenceCategory>

</PreferenceScreen>
public class ActivitySettings extends Activity {
    @Override
    protected void onCreate(Bundle savedStateInstanceState) {
        super.onCreate(savedStateInstanceState);

        // Display fragment as main content
        getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
    }

    public static class SettingsFragment extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);  //load preference screen from xml directory.
        }
    }
}