アプリに設定ページを追加する際に問題があります。設定ページをアプリに追加する
私は、SettingsActivity、SettingsFragment、actibity_settings.xmlレイアウト、およびpreferences.xmlファイルを作成しました。
私はactivity_mainビューにボタンを配置し、MainActivityにインテントを追加してSettingsActivityを呼び出しました。
ただし、ボタンを置いても何もしないようです。
SettingsActivity
public class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
MainActivity
public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
private SharedPreferences pref;
public static void start(Context context) {
Intent intent = new Intent(context, SettingsActivity.class);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
pref = PreferenceManager.getDefaultSharedPreferences(this);
pref.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onDetachedFromWindow() {
pref.unregisterOnSharedPreferenceChangeListener(this);
super.onDetachedFromWindow();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// TODO handle any special logic on change of a preference if you want
}
}
SettingsFragment、メソッドの省略残り。
public class MainActivity extends Activity implements OnClickListener {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
...
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(BAR_COLOUR)));
context = getApplicationContext();
View createButton = findViewById(R.id.locate_button);
createButton.setOnClickListener(this);
latitudeTextView = (TextView) findViewById(R.id.latitude_textview);
latitudeTextView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.define_location, 0, 0, 0);
latitudeValueTextView = (TextView) findViewById(R.id.latitude_value_textview);
longitudeTextView = (TextView) findViewById(R.id.longitude_textview);
longitudeTextView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.define_location, 0, 0, 0);
longitudeValueTextView = (TextView) findViewById(R.id.longitude_value_textview);
accuracyTextView = (TextView) findViewById(R.id.accuracy_textview);
accuracyTextView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.info, 0, 0, 0);
accuracyValueTextView = (TextView) findViewById(R.id.accuracy_value_textview);
lastUpdateTextView = (TextView) findViewById(R.id.last_update_view);
lastUpdateValueTextView = (TextView) findViewById(R.id.last_update_date);
webView = (WebView) findViewById(R.id.map_view);
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.setVisibility(View.INVISIBLE);
isPermissionGiven();
}
あるpreferences.xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="@string/pref_catOne"
android:key="pref_key_catOne" >
<CheckBoxPreference
android:key="mockCheckBox"
android:defaultValue="true"
android:title="@string/pref_mockCheckBoxOne"
android:summary="@string/pref_mockCheckBoxSummary" />
<CheckBoxPreference
android:key="mockCheckBox"
android:defaultValue="true"
android:title="@string/pref_mockCheckBoxTwo"
android:summary="@string/pref_mockCheckBoxSummary" />
</PreferenceCategory>
<PreferenceCategory
android:title="@string/pref_catTwo"
android:key="pref_key_catTwo" >
</PreferenceCategory>
</PreferenceScreen>
activity_settings.xml
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
class="org.softshack.SettingsFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
main_activity.xml(ボタンのみ)
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/accuracy_textview"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:id="@+id/settingsButton" />
これまでのところどうなりますか?あなたは私たちにいくつかの文脈を与えることができます最初に設定アクティビティが開始されていますか? –
同じページにとどまり、設定作業を開始しません。 – Yoklan
私の更新された答えは設定ページの完全な実例を参照してください。 –