কীভাবে একটি নিশ্চিতকরণ (হ্যাঁ / না) ডায়ালগপ্রেফারেন্সিকে বাস্তবায়ন করবেন?


107

আমি কীভাবে এমন কোনও অগ্রাধিকার বাস্তবায়ন করতে পারি যা একটি সাধারণ হ্যাঁ / কোনও নিশ্চিতকরণ ডায়ালগ প্রদর্শন করে না?

উদাহরণস্বরূপ, দেখুন Browser->Setting->Clear Cache

উত্তর:


292

এটি একটি সাধারণ সতর্কতা ডায়ালগ , ফেডেরিকো আপনাকে একটি সাইট দিয়েছেন যেখানে আপনি জিনিসগুলি সন্ধান করতে পারেন।

কীভাবে একটি সতর্কতা ডায়ালগ তৈরি করা যায় তার একটি ছোট উদাহরণ এখানে।

new AlertDialog.Builder(this)
.setTitle("Title")
.setMessage("Do you really want to whatever?")
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {

    public void onClick(DialogInterface dialog, int whichButton) {
        Toast.makeText(MainActivity.this, "Yaay", Toast.LENGTH_SHORT).show();
    }})
 .setNegativeButton(android.R.string.no, null).show();

3
আমি কীভাবে একটি ডায়ালগ তৈরি করতে জানি তবে পছন্দ সম্পর্কে আমার কিউ।
sh1ng

1
আপনার প্রশ্ন পছন্দ সম্পর্কে? ঠিক আছে. এখানে একবার দেখুন: kaloer.com/android- পছন্দসমূহ
Maaalte

1
আমি ইতিমধ্যে এই উত্সটি পড়েছি। আমি অনক্লিকের সদস্যতাযুক্ত কাস্টম পছন্দটি তৈরি করতে এবং এটি পরিচালনা করতে পারি, তবে এটি কি সবচেয়ে সহজ উপায়?
sh1ng

আমি তাই মনে করি, কমপক্ষে আমি এর চেয়ে সহজ আরও কোনও উপায় জানি না।
Maaalte

1
আমদানি android.support.v7.app.AlertDialog ব্যবহার করুন; কোনও থিম ছাড়াই আরও ভাল চেহারার জন্য
মজুরজিরথন 15'19

9

অ্যান্ড্রয়েড একটি বিল্ট-ইন ইয়েসনোপ্রেফারেন্স ক্লাস নিয়ে আসে যা আপনি যা চান ঠিক তা করে (হ্যাঁ এবং কোনও বিকল্পের সাথে একটি কনফার্ম ডায়ালগ)। সরকারী উত্স কোডটি এখানে দেখুন

দুর্ভাগ্যক্রমে, এটি com.android.internal.preferenceপ্যাকেজে রয়েছে যার অর্থ এটি অ্যান্ড্রয়েডের প্রাইভেট এপিআইয়ের একটি অংশ এবং আপনি নিজের অ্যাপ্লিকেশন থেকে এটি অ্যাক্সেস করতে পারবেন না (ব্যক্তিগত এপিআই ক্লাসগুলি বিজ্ঞপ্তি ছাড়াই পরিবর্তিত হতে পারে, সুতরাং গুগল আপনাকে সেগুলিতে অ্যাক্সেস না দেওয়ার কারণ)।

সমাধান: কেবলমাত্র আমার সরবরাহিত লিঙ্কটি থেকে অফিশিয়াল উত্স কোডটি অনুলিপি / আটকানোর মাধ্যমে আপনার অ্যাপ্লিকেশনটির প্যাকেজে ক্লাসটি পুনরায় তৈরি করুন। আমি এটি চেষ্টা করেছি, এবং এটি ঠিক কাজ করে (এটি না করার কোনও কারণ নেই)।

তারপরে আপনি এটিকে preferences.xmlঅন্য পছন্দগুলির মতো যুক্ত করতে পারেন । উদাহরণ:

<com.example.myapp.YesNoPreference
    android:dialogMessage="Are you sure you want to revert all settings to their default values?"
    android:key="com.example.myapp.pref_reset_settings_key"
    android:summary="Revert all settings to their default values."
    android:title="Reset Settings" />

যা দেখতে এরকম দেখাচ্ছে:

স্ক্রিনশট


1
দুর্দান্ত সমাধান! তবে এই শ্রেণীর একজন নির্মাতাকে নিয়ে সমস্যা আছে! এটি একটি রিসোর্স অ্যাটর্নি (com.android.intern.R.attr.yesNoPreferencesStyle) উল্লেখ করে! যা সমাধান করা যায় না। কাজটি কী? আমার নিজের প্রকল্পে একটি তৈরি করতে হবে ?!
পুনর্জনহীন

3

আপনি পছন্দ এক্সএমএল স্ক্রিন ব্যবহার করছেন বা আপনি যদি নিজের কাস্টম স্ক্রিন ব্যবহার করছেন তবে উদ্দেশ্য নীচের মত কোডটি ব্যবহার করুন

intentClearCookies = getPreferenceManager().createPreferenceScreen(this);
    Intent clearcookies = new Intent(PopupPostPref.this, ClearCookies.class);

    intentClearCookies.setIntent(clearcookies);
    intentClearCookies.setTitle(R.string.ClearCookies);
    intentClearCookies.setEnabled(true);
    launchPrefCat.addPreference(intentClearCookies);

এবং তারপরে নীচের মতো কিছুটা ক্রিয়াকলাপ শ্রেণি তৈরি করুন, বিভিন্ন লোক হিসাবে ভিন্ন লোক হিসাবে আপনি আপনার পছন্দ মত যে কোনও পদ্ধতির ব্যবহার করতে পারেন এটি একটি উদাহরণ।

public class ClearCookies extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    showDialog();
}

/**
 * @throws NotFoundException
 */
private void showDialog() throws NotFoundException {
    new AlertDialog.Builder(this)
            .setTitle(getResources().getString(R.string.ClearCookies))
            .setMessage(
                    getResources().getString(R.string.ClearCookieQuestion))
            .setIcon(
                    getResources().getDrawable(
                            android.R.drawable.ic_dialog_alert))
            .setPositiveButton(
                    getResources().getString(R.string.PostiveYesButton),
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            //Do Something Here

                        }
                    })
            .setNegativeButton(
                    getResources().getString(R.string.NegativeNoButton),
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            //Do Something Here
                        }
                    }).show();
}}

আগেই বলা হয়েছে যে এটি করার বিভিন্ন উপায় রয়েছে। আপনি যেভাবে নিজের কাজটি করতে পারেন এটির একটি উপায়, আপনি যদি মনে করেন যে আপনি যা চান তা পেয়েছেন তবে দয়া করে উত্তরটি গ্রহণ করুন।


ধন্যবাদ! আমি আমার অ্যাপ্লিকেশনটির জন্য ঠিক এটির প্রয়োজন যাহেতু আমি কোনও পরিষেবা থেকে ডায়ালগটি ট্রিগার করছি এবং আমার ক্ষেত্রে ডায়ালগটি হোস্ট করার জন্য আমার একটি ক্রিয়াকলাপ প্রয়োজন।
রাল্ফ রাইটোচ

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