Как создать настройку приложения в приложении xamarin android, которое отображается в Android Settings / Apps / App Setting для этого приложения? - PullRequest
1 голос
/ 17 июня 2020

Я ознакомился с документацией здесь: https://developer.android.com/guide/topics/ui/settings

На приведенной выше странице рассказывается о создании пользовательского интерфейса настроек в вашем приложении и показано использование файла XML (что он кстати не говорит, куда поставить).

Я не хочу добавлять пользовательский интерфейс настроек в свое приложение. Я просто хочу, чтобы параметр отображался в приложении настроек android в разделе «Приложения», когда вы выбираете мое приложение из этого списка, в нем уже есть раздел под названием «Настройки приложения». Я хочу добавить здесь параметр для своего приложения и иметь возможность читать его из своего приложения. (Было бы неплохо иметь возможность писать в него из моего приложения.)

Возможно ли это сделать, и если да, может ли кто-нибудь указать мне на пример.

Спасибо на ваше время.

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

В итоге я выбрал Xamarin.Essentials: Preferences, так как это было ближе всего к тому, что я мог найти, и мне не нужно было иметь пользовательский интерфейс настроек в приложении.

https://docs.microsoft.com/en-us/xamarin/essentials/preferences?context=xamarin%2Fandroid&tabs=android

0 голосов
/ 17 июня 2020

Если вы хотите этого добиться, вам следует сначала добавить следующий пакет nuget.

Xamarin.Android.Support.v7.Preference

Затем создайте папку xml, добавьте preferences.xml.

enter image description here

Вот код, добавляемый preferences.xml для тестирования.

<PreferenceScreen
    xmlns:app="http://schemas.android.com/apk/res-auto">

  <SwitchPreferenceCompat
      app:key="notifications"
      app:title="Enable message notifications"/>

  <Preference
      app:key="feedback"
      app:title="Send feedback"
      app:summary="Report technical issues or suggest new features"/>

</PreferenceScreen> 

Затем создайте класс с именем MySettingsFragment.cs, PreferenceFragmentCompat происходит из Android.Support.V7.Preferences, заполните метод preferences.xml по SetPreferencesFromResource.

using Android.OS;
using Android.Runtime;
using Android.Support.V7.Preferences;
using Android.Views;
using Android.Widget;

namespace App32
{
    public class MySettingsFragment : PreferenceFragmentCompat
    {
        public override void OnCreatePreferences(Bundle savedInstanceState, string rootKey)
        {
            SetPreferencesFromResource(Resource.Xml.preferences, rootKey);

        }
    }
}

В конце концов, мы можем добавить FrameLayout в ваш макет. xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:id="@+id/settings_container"/>
</RelativeLayout>

В действии использовать транзакцию MySettingsFragment like Fragment.

    public class MainActivity : AppCompatActivity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);
            SupportFragmentManager.BeginTransaction().Replace(Resource.Id.settings_container,new MySettingsFragment()).Commit();

        }
}
}

Здесь работает сценарий.

enter image description here

...