7

में काम नहीं कर रहा है मेरे पास SettingsActivity है जो मेरे ऐप में सेटिंग्स दिखाने के लिए PreferenceActivity बढ़ाता है।setDisplayHomeAsUpEnabled() वरीयताएक्टिविटी

एक पिछला तीर है, लेकिन यह काम नहीं कर रहा है।

<?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> 

यहाँ है कैसे 'SettingsActivity' AndroidManifest.xml में परिभाषित किया गया है:

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)) { 

     } 
    } 
} 

यहाँ preferences.xml फ़ाइल का कोड है:

<activity 
    android:name=".SettingsActivity" 
    android:label="@string/title_activity_settings" 
    android:parentActivityName=".MainActivity"> 
</activity> 

मैं ऐसा कैसे कर सकते हैं

यहाँ SettingsActivity.java फ़ाइल का कोड है तीर परिचालन?

कृपया मुझे बताएं।

क्षमा करें, यदि प्रश्न प्रारूप अनुचित लगता है। मैं अभी भी एक नौसिखिया हूँ।

+0

पर आपका टूलबार कहां है? – notsopopularguy

उत्तर

22

आप onCreate() के अंदर अपने निजी विधि setSupportActionBar() कॉल करने की आवश्यकता इस विधि कॉल करने के लिए भूल गया था।

इसके अलावा, आप onOptionsItemSelected लागू करने के लिए चाहते हो सकता है:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     onBackPressed(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
+0

अच्छा, – Sapher

2

आप में अपने onCreate()

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
+0

धन्यवाद, लेकिन इससे मदद नहीं मिली! –

2

मैं आप क्या हासिल करने की कोशिश कर रहा हो सकता है पर कुछ मान्यताओं बना दिया है। यदि आप वरीयता एक्टिविटी के साथ एक कस्टम टूलबार का उपयोग करना चाहते हैं तो यह काम करना चाहिए। निम्नलिखित कोड PostCreateView()

LinearLayout root = (LinearLayout)findViewById(android.R.id.list).getParent().getParent().getParent(); 
mToolBar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.toolbar, root,false); 
mToolBar.setTitle(R.string.title); 
// insert at top 
root.addView(mToolBar, 0); 

setSupportActionBar(mToolBar); 
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
getSupportActionBar().setDisplayShowHomeEnabled(true); 
+0

के लिए धन्यवाद, मुझे यह कहां जोड़ना चाहिए? –

+0

@HammadNasir ने उत्तर को अपडेट किया – notsopopularguy

संबंधित मुद्दे