Чтобы сохранить значения в общих настройках:
SharedPreferences preferences==PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor=preferences.edit();
editor.putString("Name","Harneet");
editor.commit();
Чтобы получить значения из общих настроек:
SharedPreferences preferences==PreferenceManager.getDefaultSharedPreferences(this);
String name=preferences.getString("Name","");
if(!name.equalsIgnoreCase(""))
{
name=name+" Sethi"; /* Edit the value here*/
}
Для редактирования данных из sharedpreference
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
editor.putString("text", mSaved.getText().toString());
editor.putInt("selection-start", mSaved.getSelectionStart());
editor.putInt("selection-end", mSaved.getSelectionEnd());
editor.commit();
Для извлечения данных из общих предпочтений
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
String restoredText = prefs.getString("text", null);
if (restoredText != null)
{
//mSaved.setText(restoredText, TextView.BufferType.EDITABLE);
int selectionStart = prefs.getInt("selection-start", -1);
int selectionEnd = prefs.getInt("selection-end", -1);
/*if (selectionStart != -1 && selectionEnd != -1)
{
mSaved.setSelection(selectionStart, selectionEnd);
}*/
}
Перечисления в CLR просто называют константами. Базовый тип должен явиться неотъемлемой частью. В Java перечисление больше похоже на именованный экземпляр типа. Тот тип может быть довольно сложным и - поскольку Ваш пример показывает - содержат несколько полей различных типов.
порт To пример к C# я просто изменил бы перечисление на неизменный класс и представил бы статические экземпляры только для чтения того класса:
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Planet planetEarth = Planet.MERCURY;
double earthRadius = pEarth.Radius; // Just threw it in to show usage
double earthWeight = double.Parse("123");
double earthMass = earthWeight / pEarth.SurfaceGravity();
foreach (Planet p in Planet.Values)
Console.WriteLine($"Your weight on {p} is {p.SurfaceWeight(mass)}");
Console.ReadKey();
}
}
public class Planet
{
public static readonly Planet MERCURY = new Planet("Mercury", 3.303e+23, 2.4397e6);
public static readonly Planet VENUS = new Planet("Venus", 4.869e+24, 6.0518e6);
public static readonly Planet EARTH = new Planet("Earth", 5.976e+24, 6.37814e6);
public static readonly Planet MARS = new Planet("Mars", 6.421e+23, 3.3972e6);
public static readonly Planet JUPITER = new Planet("Jupiter", 1.9e+27, 7.1492e7);
public static readonly Planet SATURN = new Planet("Saturn", 5.688e+26, 6.0268e7);
public static readonly Planet URANUS = new Planet("Uranus", 8.686e+25, 2.5559e7);
public static readonly Planet NEPTUNE = new Planet("Neptune", 1.024e+26, 2.4746e7);
public static readonly Planet PLUTO = new Planet("Pluto", 1.27e+22, 1.137e6);
public static IEnumerable<Planet> Values
{
get
{
yield return MERCURY;
yield return VENUS;
yield return EARTH;
yield return MARS;
yield return JUPITER;
yield return SATURN;
yield return URANUS;
yield return NEPTUNE;
yield return PLUTO;
}
}
public string Name { get; private set; }
public double Mass { get; private set; }
public double Radius { get; private set; }
Planet(string name, double mass, double radius) =>
(Name, Mass, Radius) = (name, mass, radius);
// Wniversal gravitational constant (m3 kg-1 s-2)
public const double G = 6.67300E-11;
public double SurfaceGravity() => G * mass / (radius * radius);
public double SurfaceWeight(double other) => other * SurfaceGravity();
public override string ToString() => name;
}
}
Перечисления Java являются на самом деле полными классами, которые могут иметь частного конструктора и методы и т.д., тогда как перечисления C# просто называют целыми числами. Реализация Java IMO намного выше.
Эта страница должна помочь Вам много при изучении c# прибывающий из лагеря Java. (Ссылка указывает на различия о перечислениях (прокрутка / вниз для других вещей)
Перечисление Java является синтаксическим сахаром для представления перечислений способом OO. Они - абстрактные классы, расширяющие Класс Enum в Java, и каждое перечисление значений похоже на статическую заключительную общедоступную реализацию экземпляра класса Enum. Посмотрите на сгенерированные классы, и для перечислимого "Нечто" с 10 значениями, Вы будете видеть "1 Foo$" через сгенерированные классы "за 10 Foo$".
я не знаю C#, хотя, я могу только размышлять, что перечисление на том языке больше похоже на традиционное перечисление на языках стиля C. Я вижу от быстрого поиска Google, что они могут содержать несколько значений однако, таким образом, они, вероятно, реализованы подобным образом, но с намного большим количеством ограничений, чем, что позволяет компилятор Java.
Что-то вроде этого я думаю:
public class Planets
{
public static readonly Planet MERCURY = new Planet(3.303e+23, 2.4397e6);
public static readonly Planet VENUS = new Planet(4.869e+24, 6.0518e6);
public static readonly Planet EARTH = new Planet(5.976e+24, 6.37814e6);
public static readonly Planet MARS = new Planet(6.421e+23, 3.3972e6);
public static readonly Planet JUPITER = new Planet(1.9e+27, 7.1492e7);
public static readonly Planet SATURN = new Planet(5.688e+26, 6.0268e7);
public static readonly Planet URANUS = new Planet(8.686e+25, 2.5559e7);
public static readonly Planet NEPTUNE = new Planet(1.024e+26, 2.4746e7);
public static readonly Planet PLUTO = new Planet(1.27e+22, 1.137e6);
}
public class Planet
{
public double Mass {get;private set;}
public double Radius {get;private set;}
Planet(double mass, double radius)
{
Mass = mass;
Radius = radius;
}
// universal gravitational constant (m3 kg-1 s-2)
private static readonly double G = 6.67300E-11;
public double SurfaceGravity()
{
return G * Mass / (Radius * Radius);
}
public double SurfaceWeight(double otherMass)
{
return otherMass * SurfaceGravity();
}
}
Или объединение константы в Planet
класс как выше
Перечисления Java позволяют легкие безопасные с точки зрения типов преобразования из имени с помощью сгенерированного компилятором valueOf метода, т.е.
// Java Enum has generics smarts and allows this
Planet p = Planet.valueOf("MERCURY");
, эквивалент для необработанного перечисления в C# является более подробным:
// C# enum - bit of hoop jumping required
Planet p = (Planet)Enum.Parse(typeof(Planet), "MERCURY");
Однако при потере работоспособности по маршруту, предложенному Кентом можно легко реализовать ValueOf
метод в классе Enum.
В C # атрибуты могут использоваться с перечислениями. Хороший пример этого шаблона программирования с подробным описанием - здесь (Codeproject)
public enum Planet
{
[PlanetAttr(3.303e+23, 2.4397e6)]
Mercury,
[PlanetAttr(4.869e+24, 6.0518e6)]
Venus
}
Редактировать: этот вопрос недавно был снова задан, и на него ответил Джон Скит: Что эквивалентно перечислению Java в C #? Частные внутренние классы в C # - почему они не используются чаще?
Правка 2: см. принятый ответ , который блестяще расширяет этот подход!