How to add Toolbar in PreferenceActivity

Олег Медведев

I have created an app settings with Preferences. But I noticed, that there no toolbar in my PreferenceActivity. How I can add toolbar to my PreferenceActivity?

My code:

my pref_xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
    android:key="select_class"
    android:title="@string/select_class"
    android:defaultValue="0"
    android:entries="@array/classy"
    android:entryValues="@array/classy"
    android:dialogTitle="@string/select_class" />
</PreferenceScreen>

my PrefActivity.java:

package ***.***.***;

import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;

public class PrefActivity extends PreferenceActivity {
@Override
protected void onCreate(final Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefFragment()).commit();
}

public static class PrefFragment extends PreferenceFragment
{
    @Override
    public void onCreate(final Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.pref);
    }
}
}

P.S Gautam, at your .java code there's an error in the line:

setSupportActionBar(toolbar); :

     java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx/xxx.PrefActivity}: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391)
                                                                             at android.app.ActivityThread.access$800(ActivityThread.java:151)
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                             at android.os.Looper.loop(Looper.java:135)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5349)
                                                                             at java.lang.reflect.Method.invoke(Native Method)
                                                                             at java.lang.reflect.Method.invoke(Method.java:372)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
                                                                          Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
                                                                             at android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:198)
                                                                             at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:130)
                                                                             at com.smartfon_apps.timetable_sch32.PrefActivity.onCreate(PrefActivity.java:21)
                                                                             at android.app.Activity.performCreate(Activity.java:6020)
                                                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2284)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391) 
                                                                             at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309) 
                                                                             at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                             at android.os.Looper.loop(Looper.java:135) 
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5349) 
                                                                             at java.lang.reflect.Method.invoke(Native Method) 
                                                                             at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908) 
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703) 
Gautam

Use an activity extending AppCompatActivity containing your toolbar referenced from layout file like below

public class UserSettingPreference extends AppCompatActivity {

Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.toolbar);
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.setTitle("Settings");
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

                onBackPressed();

        }
    });
    getFragmentManager().beginTransaction().replace(R.id.fragment_container,
            new UserPreferenceFragment()).commit();
}

}

Define your layout containing a toolbar and a framelayout to hold the fragment

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<Toolbar 
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#80000000"
    android:minHeight="?android:attr/actionBarSize"
    app:contentInsetEnd="0dp"
    app:contentInsetLeft="0dp"
    app:contentInsetRight="0dp"
    app:contentInsetStart="0dp"/>


<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
  />
</LinearLayout>

Then define your fragment extending preference fragment like below -

public class UserPreferenceFragment extends PreferenceFragment

To refer to your preference.xml override onCreate of fragment like below -

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.fragment_preference);
}

To refer particular elements inside your preference.xml use getPreferenceScreen method

switchPreference = (SwitchPreference) getPreferenceScreen().findPreference("floating_widget");

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

How to add stylesheet to toolbar

From Dev

how to add image to toolbar

From Java

How to add Action Bar from support library into PreferenceActivity?

From Dev

How to add a toolbar in the bottom of the screen?

From Dev

How to programmatically add elements to toolbar

From Dev

How to add a toolbar in the bottom of the screen?

From Dev

How to programmatically add elements to toolbar

From Dev

How to add toolbar to BokehJS plot?

From Dev

How to add toolbar programmatically to LinearLayout

From Dev

Adding toolbar to PreferenceActivity via AppCompatPreferenceActivity causes overlapping

From Dev

How to reference or "find" a PreferenceActivity?

From Dev

How to add an entry to toolbar context menu in qt?

From Dev

Win32 - How to add slider in toolbar?

From Dev

How to add buttons to search view in android toolbar?

From Dev

How do I add icons to a second Toolbar

From Java

How can I add a toolbar above the keyboard?

From Dev

How to add two touching toolbar items to NSToolbar

From Dev

How to add widgets to toolbar and increase its height

From Dev

GtkToolbar: How to add Toolitem to toolbar using PyGObject

From Dev

How to properly add custom view to the toolbar?

From Dev

How to add more shortcuts to android studio toolbar?

From Dev

How to add DrawerLayout to my ToolBar / ActionBar

From Dev

How to add a template to a Kendo grid toolbar

From Dev

How to add a notification drawer to the toolbar in Jira

From Dev

How to add search button on toolbar in material design

From Dev

How to add multiple menu sections to toolbar?

From Dev

How to add a bottom toolbar in an html page

From Dev

How to add a spinner next to a menu in the toolbar

From Dev

How to add another icon in the toolbar with NavigationView

Related Related

  1. 1

    How to add stylesheet to toolbar

  2. 2

    how to add image to toolbar

  3. 3

    How to add Action Bar from support library into PreferenceActivity?

  4. 4

    How to add a toolbar in the bottom of the screen?

  5. 5

    How to programmatically add elements to toolbar

  6. 6

    How to add a toolbar in the bottom of the screen?

  7. 7

    How to programmatically add elements to toolbar

  8. 8

    How to add toolbar to BokehJS plot?

  9. 9

    How to add toolbar programmatically to LinearLayout

  10. 10

    Adding toolbar to PreferenceActivity via AppCompatPreferenceActivity causes overlapping

  11. 11

    How to reference or "find" a PreferenceActivity?

  12. 12

    How to add an entry to toolbar context menu in qt?

  13. 13

    Win32 - How to add slider in toolbar?

  14. 14

    How to add buttons to search view in android toolbar?

  15. 15

    How do I add icons to a second Toolbar

  16. 16

    How can I add a toolbar above the keyboard?

  17. 17

    How to add two touching toolbar items to NSToolbar

  18. 18

    How to add widgets to toolbar and increase its height

  19. 19

    GtkToolbar: How to add Toolitem to toolbar using PyGObject

  20. 20

    How to properly add custom view to the toolbar?

  21. 21

    How to add more shortcuts to android studio toolbar?

  22. 22

    How to add DrawerLayout to my ToolBar / ActionBar

  23. 23

    How to add a template to a Kendo grid toolbar

  24. 24

    How to add a notification drawer to the toolbar in Jira

  25. 25

    How to add search button on toolbar in material design

  26. 26

    How to add multiple menu sections to toolbar?

  27. 27

    How to add a bottom toolbar in an html page

  28. 28

    How to add a spinner next to a menu in the toolbar

  29. 29

    How to add another icon in the toolbar with NavigationView

HotTag

Archive