সমর্থন লাইব্রেরি থেকে অ্যাকশন বার কীভাবে অগ্রাধিকার কার্যকারিতাটিতে যুক্ত করবেন?


128

অ্যাকশন বারের সামঞ্জস্যতা সমর্থন লাইব্রেরি, সংশোধন 18 এ যুক্ত করা হয়েছে ActionBarActivity। অ্যান্ড্রয়েডের পুরানো সংস্করণগুলিতে অ্যাকশন বারের সাথে ক্রিয়াকলাপ তৈরি করার ক্লাস রয়েছে ।

সমর্থন লাইব্রেরি থেকে অ্যাকশন বার যুক্ত করার কোনও উপায় আছে কি PreferenceActivity?

পূর্বে আমি অ্যাকশনবার্ল্লক ব্যবহার করতাম এবং এটিও ছিল SherlockPreferenceActivity



1
আমি স্রেফ আমার উত্তরটি সম্পাদনা করেছি, সমর্থন-ভি 4 এর ভিত্তিতে একটি কার্যকারী অগ্রাধিকার বাস্তবায়ন পেয়েছি যা অ্যাকশনবার্টিভিটির সাথে দুর্দান্ত কাজ করে। আমি নিজে এটি ব্যবহার করছি।
Ostkontentitan

আপনি যদি চান, আপনি আমার সমাধানটি ব্যবহার করতে পারেন: github.com/AndroidDeveloperLB/MaterialStuffLibrary
অ্যান্ড্রয়েড বিকাশকারী

উত্তর:


128

সম্পাদনা: অ্যাপকম্প্যাট-ভি 7 22.1.0 এ গুগল অ্যাপকম্প্যাটডেলিগেট অ্যাবস্ট্রাক্ট ক্লাসকে একটি প্রতিনিধি হিসাবে যুক্ত করেছে আপনি যে কোনও ক্রিয়াকলাপে অ্যাপকম্প্যাট সমর্থন বাড়ানোর জন্য ব্যবহার করতে পারেন।

এটি এর মতো ব্যবহার করুন:

...
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatDelegate;
import android.support.v7.widget.Toolbar;
...

public class SettingsActivity extends PreferenceActivity {

    private AppCompatDelegate mDelegate;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getDelegate().installViewFactory();
        getDelegate().onCreate(savedInstanceState);
        super.onCreate(savedInstanceState);
    }

    @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);
    }

    @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;
    }
}

আর হ্যাকিং নেই। AppCompatPreferencesActivity.java থেকে নেওয়া কোড ।


দয়া করে আপনার উত্তরে আপনার প্রয়োজনীয় কোড স্নিপেটগুলি রাখুন। সম্ভাব্য ভাঙ্গা লিঙ্ক সমস্যা এড়ানোর জন্য।
যোহানেস খোসিয়াওয়ান 许先汉

ধন্যবাদ, এটি আমার জন্য কাজ করে - আমি প্রথম স্ফীত কলটিতে নতুন লিনিয়ারলআউটকে পরিবর্তন করব:(ViewGroup) getWindow().getDecorView().getRootView()
আহমাদ্রে

2
@ পিটারসিন এটি আসলে কাজ করে। আপনার কীভাবে এটি করা উচিত তা জানতে এখানে এবং এখানে দেখুন ।
íubomír Kučera

1
@swooby আপনি এই বাগ থেকে ভুগতে পারেন ।
íubomír Kučera

1
ঠিক আছে তো আমি টুলবারটি এক্সএমএলে কোথায় রাখি? আমি একটি নালপয়েন্টার এক্সসেপশন পাচ্ছি
মার্টিন এরলিক

78

অ্যাপকম্প্যাট দিয়ে বর্তমানে অর্জনের কোনও উপায় নেই। আমি অভ্যন্তরীণভাবে একটি বাগ খুলেছি।


6
ধন্যবাদ @ ক্রিস। এই বৈশিষ্ট্যটি পেয়ে ভাল লাগবে।
পাবলো

12
@ ক্রিস, কখন আমাদের PreferenceActivityযুক্ত হওয়ার আশা করা যায় ActionBarCompat?
imbryk

3
আমি মনে করি এটি খুব সম্ভবত এই বৈশিষ্ট্যটি বাস্তবায়িত হতে চলেছে। অ্যান্ড্রয়েড (<4.0) এর পুরানো সংস্করণে চলমান ডিভাইসের সংখ্যা এই সময়ে 30% এরও কম এবং এই সংখ্যাটি প্রতি মাসে কমছে down
রোমান

1
এটি প্রায় এক বছর আগে প্রবেশ করা হয়েছিল এবং কোনও সমাধান ??
কেউ কোথাও

1
ডাব্লুটিএফ এখনও অপেক্ষা করছে ??
ভঙ্গ

24

আমি গুগল প্লে স্টোর যেভাবে ব্যবহার করে তার অনুরূপ একটি কাজ তৈরি করতে পরিচালিত করেছি। মূল উত্তরের লিঙ্ক

দয়া করে গিটহাব রেপোটি সন্ধান করুন: এখানে


আপনার নিজস্ব কোডের সাথে খুব মিল তবে সেট শিরোনামের জন্য অনুমতি দিতে এক্সএমএল যুক্ত করেছে:

ব্যবহার অব্যাহত PreferenceActivity:

settings_toolbar.xml :

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    app:navigationContentDescription="@string/abc_action_bar_up_description"
    android:background="?attr/colorPrimary"
    app:navigationIcon="?attr/homeAsUpIndicator"
    app:title="@string/action_settings"
    />

SettingsActivity.java :

public class SettingsActivity extends PreferenceActivity {

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);

        LinearLayout root = (LinearLayout)findViewById(android.R.id.list).getParent().getParent().getParent();
        Toolbar bar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.settings_toolbar, root, false);
        root.addView(bar, 0); // insert at top
        bar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }

}

Result :

উদাহরণ


আপডেট (জিনজারব্রেড সামঞ্জস্যতা):

হিসাবে নির্দিষ্ট এখানে , জিনজার ব্রেড ডিভাইস এই লাইনে নালপয়েন্টারএক্সেপশন ফিরে আছেন:

LinearLayout root = (LinearLayout)findViewById(android.R.id.list).getParent().getParent().getParent();

ফিক্স:

SettingsActivity.java :

public class SettingsActivity extends PreferenceActivity {

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        Toolbar bar;

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            LinearLayout root = (LinearLayout) findViewById(android.R.id.list).getParent().getParent().getParent();
            bar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.settings_toolbar, root, false);
            root.addView(bar, 0); // insert at top
        } else {
            ViewGroup root = (ViewGroup) findViewById(android.R.id.content);
            ListView content = (ListView) root.getChildAt(0);

            root.removeAllViews();

            bar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.settings_toolbar, root, false);
            

            int height;
            TypedValue tv = new TypedValue();
            if (getTheme().resolveAttribute(R.attr.actionBarSize, tv, true)) {
                height = TypedValue.complexToDimensionPixelSize(tv.data, getResources().getDisplayMetrics());
            }else{
                height = bar.getHeight();
            }

            content.setPadding(0, height, 0, 0);

            root.addView(content);
            root.addView(bar);
        }

        bar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }
}

উপরের কোন সমস্যা আমাকে জানাবেন!


আপডেট 2: টিঙ্কিং ওয়ার্কারাউন্ড

অনেক দেব নোটগুলিতে যেমন উল্লেখ করা হয়েছে PreferenceActivityতেমন উপাদানগুলির রঙিনকে সমর্থন করে না তবে কয়েকটি অভ্যন্তরীণ ক্লাস ব্যবহার করে আপনি এটি অর্জন করতে পারেন। এই ক্লাসগুলি অপসারণ না হওয়া অবধি। (অ্যাপকম্প্যাট সমর্থন-v7 v21.0.3 ব্যবহার করে কাজ করে)।

নিম্নলিখিত আমদানি যুক্ত করুন:

import android.support.v7.internal.widget.TintCheckBox;
import android.support.v7.internal.widget.TintCheckedTextView;
import android.support.v7.internal.widget.TintEditText;
import android.support.v7.internal.widget.TintRadioButton;
import android.support.v7.internal.widget.TintSpinner;

তারপরে onCreateViewপদ্ধতিটি ওভাররাইড করুন :

@Override
public View onCreateView(String name, Context context, AttributeSet attrs) {
    // Allow super to try and create a view first
    final View result = super.onCreateView(name, context, attrs);
    if (result != null) {
        return result;
    }

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        // If we're running pre-L, we need to 'inject' our tint aware Views in place of the
        // standard framework versions
        switch (name) {
            case "EditText":
                return new TintEditText(this, attrs);
            case "Spinner":
                return new TintSpinner(this, attrs);
            case "CheckBox":
                return new TintCheckBox(this, attrs);
            case "RadioButton":
                return new TintRadioButton(this, attrs);
            case "CheckedTextView":
                return new TintCheckedTextView(this, attrs);
        }
    }

    return null;
}

Result:

উদাহরণ 2


অ্যাপকম্প্যাট 22.1

অ্যাপক্যাম্প্যাট 22.1 নতুন রঙিন উপাদানগুলি প্রবর্তন করেছে যার অর্থ শেষ আপডেটের মতো একই প্রভাব অর্জনের জন্য অভ্যন্তরীণ ক্লাসগুলি ব্যবহার করার দরকার নেই। পরিবর্তে এটি অনুসরণ করুন (এখনও ওভাররাইডিং onCreateView):

@Override
public View onCreateView(String name, Context context, AttributeSet attrs) {
    // Allow super to try and create a view first
    final View result = super.onCreateView(name, context, attrs);
    if (result != null) {
        return result;
    }

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        // If we're running pre-L, we need to 'inject' our tint aware Views in place of the
        // standard framework versions
        switch (name) {
            case "EditText":
                return new AppCompatEditText(this, attrs);
            case "Spinner":
                return new AppCompatSpinner(this, attrs);
            case "CheckBox":
                return new AppCompatCheckBox(this, attrs);
            case "RadioButton":
                return new AppCompatRadioButton(this, attrs);
            case "CheckedTextView":
                return new AppCompatCheckedTextView(this, attrs);
        }
    }

    return null;
}

প্রয়োজনীয় পছন্দসই স্ক্রিনগুলি

অনেক লোক নেস্টেড এরগুলিতে টুলবারটি অন্তর্ভুক্ত করে সমস্যাগুলি ভোগ করছে <PreferenceScreen />তবে আমি একটি সমাধান পেয়েছি !! - অনেক পরীক্ষার পরেও ত্রুটি!

আপনার সাথে নিম্নলিখিতগুলি যুক্ত করুন SettingsActivity:

@SuppressWarnings("deprecation")
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
    super.onPreferenceTreeClick(preferenceScreen, preference);

    // If the user has clicked on a preference screen, set up the screen
    if (preference instanceof PreferenceScreen) {
        setUpNestedScreen((PreferenceScreen) preference);
    }

    return false;
}

public void setUpNestedScreen(PreferenceScreen preferenceScreen) {
    final Dialog dialog = preferenceScreen.getDialog();

    Toolbar bar;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        LinearLayout root = (LinearLayout) dialog.findViewById(android.R.id.list).getParent();
        bar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.settings_toolbar, root, false);
        root.addView(bar, 0); // insert at top
    } else {
        ViewGroup root = (ViewGroup) dialog.findViewById(android.R.id.content);
        ListView content = (ListView) root.getChildAt(0);

        root.removeAllViews();

        bar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.settings_toolbar, root, false);

        int height;
        TypedValue tv = new TypedValue();
        if (getTheme().resolveAttribute(R.attr.actionBarSize, tv, true)) {
            height = TypedValue.complexToDimensionPixelSize(tv.data, getResources().getDisplayMetrics());
        }else{
            height = bar.getHeight();
        }

        content.setPadding(0, height, 0, 0);

        root.addView(content);
        root.addView(bar);
    }

    bar.setTitle(preferenceScreen.getTitle());

    bar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });
}

PreferenceScreenজাতীয় ব্যথা হওয়ার কারণ হ'ল এগুলি একটি মোড়কের ডায়ালগ হিসাবে ভিত্তি করে রয়েছে, সুতরাং আমাদের এটির সাথে ডায়ালগ লেআউট ক্যাপচার করতে হবে।


সরঞ্জামদণ্ডের ছায়া

ডিজাইনটি আমদানি করে Toolbarপ্রি-ভি 21 ডিভাইসগুলিতে উচ্চতা এবং ছায়া গোছানোর অনুমতি দেয় না, তাই আপনি যদি নিজের উপর উচ্চতা রাখতে চান তবে আপনাকে Toolbarএটিতে একটি মোড়ানো দরকার AppBarLayout:

`সেটিংস_টলবার.এক্সএমএল:

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

   <android.support.v7.widget.Toolbar
       .../>

</android.support.design.widget.AppBarLayout>

build.gradleফাইলে নির্ভরতা হিসাবে ডিজাইন সমর্থন লাইব্রেরি যুক্ত করতে ভুলবেন না :

compile 'com.android.support:support-v4:22.2.0'
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:design:22.2.0'

অ্যান্ড্রয়েড 6.0

আমি উল্লিখিত ওভারল্যাপিং ইস্যুটি তদন্ত করেছি এবং আমি সমস্যাটি পুনরুত্পাদন করতে পারি না।

উপরোক্ত হিসাবে ব্যবহারের পূর্ণ কোড নিম্নলিখিতটি উত্পাদন করে:

এখানে চিত্র বর্ণনা লিখুন

যদি আমি কিছু মিস করছি তবে দয়া করে আমাকে এই রেপোর মাধ্যমে জানান এবং আমি তদন্ত করব।


1
গ্রেট! কবজির মতো কাজ করে :)
টোবি

কেন এটি নেস্টেড পছন্দসই স্ক্রিনের জন্য কাজ করে না, তবে কেবল মূল পছন্দসই স্ক্রিনের জন্য?
টোবি

@ টোবি আমি নেস্টেড ইস্যু সমাধান করার জন্য আমার উত্তর আপডেট করেছি এবং কেন তা ব্যাখ্যা করেছি। :)
ডেভিড পাসমোর

ধন্যবাদ! আপনার পরামর্শ "AppCompat 22.1" আমার জন্য কৌতুক করেছে :) খুব দরকারী!
মার্টিন ফেফার

1
পাছায় এমন PreferenceActivity ব্যথা কেন ব্যবহার করতে হবে ??? এটা সময় বাঁচানোর কথা। আমি পাশাপাশি একটি নিয়মিত ক্রিয়াকলাপ করতে পারি এবং নিজে নিজেই নিজেকে একটি রৈখিক বিন্যাসে সমস্ত সেটিংস রেখে দিতে পারি। ফুয়ুক!
কেউ কোথাও

12

সমর্থন-ভি 4 খণ্ডের উপর ভিত্তি করে একটি অগ্রাধিকার বাস্তবায়ন পাওয়া গেছে:

https://github.com/kolavar/android-support-v4-preferencefragment

সম্পাদনা: আমি কেবল এটি পরীক্ষা করেছি এবং এটির দুর্দান্ত কাজ!


@ কনস্টান্টিন, আপনি কিছু কোড উদাহরণ যোগ করতে পারেন? আমি এটিকে ডাউনলোড করেছি, android.preferences.PreferencesFragment থেকে android.support.v4.preferences.PreferencesFraament এ আমদানি পরিবর্তন করেছি এবং আমি এটি পর্দার মাঝখানে কিছু শিরোনাম যুক্ত করেছি, তবে শীর্ষে থাকা অ্যাকশনবারকে না
গ্যাভ্রিয়েল

এটি ক্রিয়াকলাপের কাজের জন্য অ্যাকশনবারকে যুক্ত করে না। দুর্ভাগ্যক্রমে আমার হাতে কোনও নমুনা নেই তবে এটির মতো কাজ করা উচিত: বিকাশকারী.অ্যান্ড্রয়েড.
com

3

PreferenceActivityকমপক্ষে আমার পক্ষে এবিসির সাথে সংহত হওয়া সম্ভব নয়। আমি যে দুটি সম্ভাবনার সন্ধান করতে পেরেছি তা চেষ্টা করেছিলাম কিন্তু কোনওটিই কার্যকর হয়নি:

বিকল্প 1:

ActionBarPreferenceActivityপ্রসারিত PreferenceActivity। আপনি যখন এটি করেন আপনি দ্বারা সীমাবদ্ধ হয়ে যায় ActionBarActivityDelegate.createDelegate(ActionBarActivity activity)। এছাড়াও আপনাকে কার্যকর করতে হবে ActionBar.Callbacksযা অ্যাক্সেসযোগ্য নয়

বিকল্প 2:

ActionBarPreferenceActivityপ্রসারিত ActionBarActivity। এই পদ্ধতির জন্য সম্পূর্ণ নতুন লিখতে হবে PreferenceActivity, PreferenceManagerএবং এর PreferenceFragmentঅর্থ হ'ল আপনার যেমন গোপন শ্রেণীর অ্যাক্সেসের প্রয়োজন এটির com.android.internal.util.XmlUtils সমাধান কেবল গুগল ডেভস থেকে আসে ActionBarWrapperযা কোনও ক্রিয়াকলাপে যুক্ত হতে পারে implementing

আপনার যদি সত্যিই পছন্দসই ক্রিয়াকলাপের প্রয়োজন হয় তবে আপাতত আমার পরামর্শ ActionBarSherlock

তবে আমি এটি এখানে বাস্তবায়ন করতে পেরেছি ।


1
পার4.0 ক্রাশ নিয়ে আসে। আমি এটি কাঁটাচামচ এবং উন্নত করেছি। gist.github.com/0e9fe2119b901921b160
TeeTracker

আমার সমাধান পরীক্ষা করে দেখুন। এটি কোনও কার্যনির্বাহী স্ট্যাকওভারফ্লো.com
সুফিয়ান

এতে কিছু সমাধান হয় না! আশা করি আপনি এই সমস্যাটি হাতের
মুঠোয়

3

সমস্যার পটভূমি:

ওপি জানেন যে কিভাবে আমরা লাগাতে পারেন চায় MenuItemমধ্যে গুলি ActionBarএর PreferenceActivityপ্রাক মউচাক কারণ Android এর সমর্থন গ্রন্থাগার একটি বাগ যা এই ঘটতে অনুমতি দেয় না হয়েছে।

আমার সমাধান:

লক্ষ্য অর্জনের জন্য আমি ইতিমধ্যে প্রস্তাবিতের চেয়ে অনেক বেশি পরিষ্কার উপায় খুঁজে পেয়েছি (এবং এটি অ্যান্ড্রয়েড ডক্সে পেয়েছি ):

android:parentActivityName

ক্রিয়াকলাপটির যৌক্তিক পিতামাতার শ্রেণীর নাম। এখানে নামের সাথে অবশ্যই সংশ্লিষ্ট উপাদানটির অ্যান্ড্রয়েড: নামের বৈশিষ্ট্যকে দেওয়া শ্রেণীর নামের সাথে মেলে।

ব্যবহারটি অ্যাকশন বারে আপ বোতামটি চাপলে কোন ক্রিয়াকলাপটি শুরু করা উচিত তা নির্ধারণ করতে সিস্টেমটি এই বৈশিষ্ট্যটি পড়ে reads টাস্কস্ট্যাকবিল্ডারের সাথে ক্রিয়াকলাপের পিছনের অংশটিকে সংশ্লেষিত করতে সিস্টেম এই তথ্যটিও ব্যবহার করতে পারে।

4 - 16 স্তরের API সমর্থন করতে, আপনি এমন কোনও উপাদান সহ পিতামাতার ক্রিয়াকলাপটিও ঘোষণা করতে পারেন যা "android.support.PARENT_ACTIVITY" এর জন্য একটি মান নির্দিষ্ট করে। উদাহরণ স্বরূপ:

<activity
    android:name="com.example.app.ChildActivity"
    android:label="@string/title_child_activity"
    android:parentActivityName="com.example.myfirstapp.MainActivity" >
    <!-- Parent activity meta-data to support API level 4+ -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.app.MainActivity" />
</activity>

এখন আপনি যা করতে চান তা করুন onOptionsItemSelected()। এটি অ্যান্ড্রয়েড ডক্সের একটি অংশ হওয়ায় এর কোনও পার্শ্ব-প্রতিক্রিয়া নেই।

শুভ কোডিং। :)

হালনাগাদ:

আপনি ললিপপ লক্ষ্য করে নিলে এই সমাধানটি আর কাজ করে না। আপনি যদি অ্যাপকম্প্যাট ব্যবহার করছেন তবে এই উত্তরটি আপনার সন্ধান করা উচিত।


এটি কীভাবে পছন্দসই ক্রিয়াকলাপে অ্যাকশন বার পেতে সহায়তা করে?
হিমায়িত ক্রাইওন

@ArjunU। সহজ সমাধান - এটি চেষ্টা করে দেখুন এবং এটি বের করুন।
সুফিয়ান

@ArjunU। সমস্যাটি ছিল যে PreferencesActivityআইটেমগুলি রাখার কোনও উপায় নেই ActionBar, বিশেষত পিছনের বোতামটিতে। আমার উত্তর এটির জন্য একটি ভাল ফিক্স।
সুফিয়ান

ডাউনভোটের জন্য ধন্যবাদ আমি কীভাবে আমার উত্তরকে উন্নত করতে পারলাম বা কী ভুল ছিল?
সুফিয়ান

1
@ সুফিয়ান আমার উত্তরটির সাথে লিঙ্ক দেওয়ার জন্য ধন্যবাদ, সবাইকে সাহায্য করছে বলে খুশি:)
ডেভিড পাসমোর

1

আমি android.app.Actionbarব্যবহার করে পেতে সক্ষম হয়েছি getActionBar()। এটি প্রথমে একটি নাল মান ফিরিয়ে দিয়েছে ... তারপরে আমি ম্যানিফেস্টে গিয়ে থিমটি এতে পরিবর্তন করেছি:

android:theme="@style/Theme.AppCompat"

তারপরে আমি আবার অ্যাকশনবারটি রাখতে সক্ষম হয়েছি। আমি ধরে নিচ্ছি এটি কেবল নির্দিষ্ট বিল্ড স্তরের জন্য কাজ করবে। সুতরাং আপনি বিল্ড নম্বরটির জন্য একটি চেক করতে বা প্রত্যাবর্তিত মানটি শূন্য কিনা তা পরীক্ষা করতে চাইতে পারেন।

এটি আমার পক্ষে ঠিক থাকবে কারণ আমি যে অ্যাপ্লিকেশনটিতে কাজ করছি তা ICS/4.0+ এর জন্য ।


এখানে একটি সহজ সমাধান, যা কোনও কাজের ক্ষেত্র
সুফিয়ান

0

এখন এই সমস্যার সরকারী উত্তর প্রকাশ করা হয়েছে। এটি v7 / v14 পছন্দ সমর্থন লাইব্রেরি।

দেখুন v7 / v14 অভিরুচি সাপোর্ট গ্রন্থাগার কীভাবে ব্যবহার করতে হয়? এটি কীভাবে ব্যবহার করবেন তা আলোচনার জন্য।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.