setDisplayHomeAsUpEnabled() funktioniert nicht in PreferenceActivity
Ich habe eine SettingsActivity
erstreckt PreferenceActivity
zeigen die Einstellungen in meiner app.
Es ist ein zurück-Pfeil, aber es funktioniert nicht.
Hier SettingsActivity.java
Datei ist code:
public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener{
private AppCompatDelegate mDelegate;
public static final String RESET_PASSWORD_KEY = "reset_password";
@Override
protected void onCreate(Bundle savedInstanceState) {
//TODO Auto-generated method stub
getDelegate().installViewFactory();
getDelegate().onCreate(savedInstanceState);
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
SharedPreferences sharedPreferencesCompat = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
Preference myPref = (Preference) findPreference(RESET_PASSWORD_KEY);
myPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
//open browser or intent here
Intent resetPasswordActivityIntent = new Intent(SettingsActivity.this, ResetPasswordActivity.class);
startActivity(resetPasswordActivityIntent);
return true;
}
});
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
getDelegate().onPostCreate(savedInstanceState);
}
public ActionBar getSupportActionBar() {
return getDelegate().getSupportActionBar();
}
public void setSupportActionBar(@Nullable Toolbar toolbar) {
getDelegate().setSupportActionBar(toolbar);
getDelegate().getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public MenuInflater getMenuInflater() {
return getDelegate().getMenuInflater();
}
@Override
public void setContentView(@LayoutRes int layoutResID) {
getDelegate().setContentView(layoutResID);
}
@Override
public void setContentView(View view) {
getDelegate().setContentView(view);
}
@Override
public void setContentView(View view, ViewGroup.LayoutParams params) {
getDelegate().setContentView(view, params);
}
@Override
public void addContentView(View view, ViewGroup.LayoutParams params) {
getDelegate().addContentView(view, params);
}
@Override
protected void onPostResume() {
super.onPostResume();
getDelegate().onPostResume();
}
@Override
protected void onTitleChanged(CharSequence title, int color) {
super.onTitleChanged(title, color);
getDelegate().setTitle(title);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
getDelegate().onConfigurationChanged(newConfig);
}
@Override
protected void onStop() {
super.onStop();
getDelegate().onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
getDelegate().onDestroy();
}
public void invalidateOptionsMenu() {
getDelegate().invalidateOptionsMenu();
}
private AppCompatDelegate getDelegate() {
if (mDelegate == null) {
mDelegate = AppCompatDelegate.create(this, null);
}
return mDelegate;
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals(RESET_PASSWORD_KEY)) {
}
}
}
Hier preferences.xml
Datei ist code:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference
android:title="xxx"
android:summary="xxxxxx"
android:key="reset_password" />
</PreferenceScreen>
Hier ist, wie "SettingsActivity' definiert ist, in AndroidManifest.xml
:
<activity
android:name=".SettingsActivity"
android:label="@string/title_activity_settings"
android:parentActivityName=".MainActivity">
</activity>
Wie kann ich machen, dass der Pfeil in Betrieb?
Bitte lassen Sie mich wissen.
Sorry, falls die Frage format scheint unangemessen. Ich bin noch Anfänger.
- wo ist die Symbolleiste?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie rufen Sie Ihre private Methode
setSupportActionBar()
innenonCreate()
.Auch, möchten Sie vielleicht zu implementieren
onOptionsItemSelected
:Habe ich einige Annahmen über das, was Sie versuchen zu erreichen. Diese arbeiten sollten, wenn Sie verwenden möchten, die eine benutzerdefinierte Symbolleiste mit PreferenceActivity. Der folgende code wird innerhalb onPostCreateView()
Haben Sie vergessen, rufen Sie diese Methode in Ihrem
onCreate()