Вычитал в интернете про создание активити настроек для приложения. Во всех статьях, что я нашёл использовался метод addPreferencesFromResource()
:
public class PrefActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences)
}
}
Но как оказалось, этот метод deprecated, из-за чего возникает вопрос: как создаётся активити настроек в версии API 25?
UPD: Сделал всё как написано ответе, котрый дал @Regent, но при попытке запуска акивити настроек приложение закрывается, вылазит окно "приложение остановлено". PrefFragment.java:
package com.evgeniy.calc;
import android.os.Bundle;
import android.preference.PreferenceFragment;
public class PrefFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
PrefActivity.java:
package com.evgeniy.calc;
import android.preference.PreferenceActivity;
import java.util.List;
public class PrefActivity extends PreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preferences, target);
}
@Override
protected boolean isValidFragment(String fragmentName) {
return PrefFragment.class.getName().equals(fragmentName);
}
}
Вызов активити настроек в MainActivity.java:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
startActivity(new Intent(this, PrefActivity.class));
return true;
case R.id.action_about:
startActivity(new Intent(this, AboutActivity.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Метод deprecated, потому что сейчас для этого предлагается использовать PreferenceFragment. Подробнее об этом написано в руководстве.
Если коротко, то так:
public class SettingsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Display the fragment as the 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);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как растянуть текстуру по диагонали? Те что бы она была похожа на параллелограмм
Устал гуглитьчто за контроллер времени импользуется в современных смартфонах и что является его эталоном времени? В каком виде этот контроллер...
У меня консольная программа крестики-ноликиДля тестирования ввода с консоли я использую класс StubInput: