Android 将设置图标齿轮添加到应用程序信息

问题描述 投票:0回答:1

我正在使用 Xamarin Forms 并尝试将“设置”图标齿轮添加到我的应用程序信息中,这是我尝试过的:

将此添加到应用程序节点内的

AndroidManifest.xml

<activity
            android:name=".ui.SettingsActivity"
            android:label="Settings"
            android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.NOTIFICATION_PREFERENCES" />
        </intent-filter>
    </activity>

在我的根目录中创建了一个名为

SettingsActivity.cs
的文件并添加了此代码,我收到错误:

“当前上下文中不存在名称“AddPreferencesFromResource””):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.Preferences;

namespace RegistrationApp.Droid
{
    [Activity (Label = "SettingsActivity")]
    [Obsolete]
    public class SettingsActivity : Activity
    {
        protected override void OnCreate (Bundle savedInstanceState)
        {
            base.OnCreate (savedInstanceState);

            // Create your application here
            AddPreferencesFromResource(Resource.Xml.preferences);
        }
    }
}

我在资源中创建了一个 xml 文件夹,并在新的 xml 文件夹中创建了一个名为

preferences.xml
的文件,并添加了以下代码:

<?xml version="1.0" encoding="UTF-8" ?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory android:title="General">

        <EditTextPreference
            android:key="edit_text_preference"
            android:title="EditText Preference"
            android:summary="This is an EditText preference"
            android:dialogTitle="Enter your text" />

        <!-- Add more preferences as needed -->

    </PreferenceCategory>

</PreferenceScreen>

我收到错误“当前上下文中不存在名称“AddPreferencesFromResource””,因此更改了此内容:

public class SettingsActivity : Activity
到此
public class SettingsActivity : PreferenceActivity
并且解决了错误,但应用程序信息中仍然没有设置齿轮...我做错了什么吗?

我的目标是在应用程序信息中设置设置,以便用户能够更改。

android xamarin.forms xamarin.android
1个回答
0
投票

按照“在 PreferenceActivity 中使用什么来代替“addPreferencesFromResource”?”,您可能需要 AndroidX 库中的

PreferenceFragmentCompat
,而不是已弃用的 PreferenceActivity#addPreferencesFromResource
 方法。

<PackageReference Include="Xamarin.AndroidX.Preference" Version="1.2.1.4" />
您的 

SettingsActivity

 应扩展 
AppCompatActivity
 并主持 
PreferenceFragmentCompat

[Activity(Label = "Settings")] public class SettingsActivity : AppCompatActivity { protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SupportFragmentManager .BeginTransaction() .Replace(Android.Resource.Id.Content, new SettingsFragment()) .Commit(); } }
实现 

SettingsFragment

 扩展 
PreferenceFragmentCompat
 并从资源文件加载首选项:

public class SettingsFragment : PreferenceFragmentCompat { public override void OnCreatePreferences(Bundle savedInstanceState, string rootKey) { SetPreferencesFromResource(Resource.Xml.preferences, rootKey); } }
您的 

preferences.xml

 文件保持不变。

确保您的

AndroidManifest.xml

 反映了正确的活动名称。如果您的 
SettingsActivity
 位于特定命名空间内,请确保正确指定:

<activity android:name=".SettingsActivity" android:label="Settings" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.NOTIFICATION_PREFERENCES" /> </intent-filter> </activity>
    
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.