アプリケーションが開くとすぐに設定フラグメントが表示されるように、MainActivity のビューを置き換えようとしています。APIレベル10のデバイスをサポートするためにandroid.support.v4.app.Fragmentライブラリを使用して同じタスクを達成しようとするまで、すべてが機能していました。 、次のエラーが表示されます:「FragmentTransaction 型のメソッド replace(int, Fragment) は引数 (int, SettingsFragment) には適用できません」私の設定フラグメントは Fragment を拡張する PreferenceFragment を拡張するため、これが問題になる理由はわかりません。
すべてのヘルプは大歓迎です。
public class MainActivity extends FragmentActivity {
@Override
public View onCreateView(String name, Context context, AttributeSet attrs) {
getSupportFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment()) //SettingFragment is my class that manages the preferences
.commit();
Intent intent = new Intent(this, MainService.class);
startService(intent);
return super.onCreateView(name, context, attrs);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
次の授業:
public class SettingsFragment extends PreferenceFragment{
ListPreference notificationDrawerUnitOfMeasurePreference;
ListPreference notificationAreaUnitOfMeasurePreference;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
notificationDrawerUnitOfMeasurePreference = (ListPreference) findPreference("pref_key_measurement_unit");
notificationAreaUnitOfMeasurePreference = (ListPreference) findPreference("pref_key_measurement_unit_notification_area");
notificationDrawerUnitOfMeasurePreference.setOnPreferenceChangeListener(notificationDrawerUnitOfMeasurePreferenceListener);
notificationAreaUnitOfMeasurePreference.setOnPreferenceChangeListener(notificationAreaUnitOfMeasurePreferenceListener);
notificationDrawerUnitOfMeasurePreference.setSummary(notificationDrawerUnitOfMeasurePreference.getValue().toString());
notificationAreaUnitOfMeasurePreference.setSummary(notificationAreaUnitOfMeasurePreference.getValue().toString());
}
private OnPreferenceChangeListener notificationDrawerUnitOfMeasurePreferenceListener = new OnPreferenceChangeListener(){
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
((ListPreference) preference).setValue(newValue.toString());
preference.setSummary(newValue.toString());
return false;
}
};
private OnPreferenceChangeListener notificationAreaUnitOfMeasurePreferenceListener = new OnPreferenceChangeListener(){
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
((ListPreference) preference).setValue(newValue.toString());
preference.setSummary(newValue.toString());
return false;
}
};
}