निर्देशों के साथ चरण जोड़ें

Compose की सुविधा की मदद से बेहतर बनाएं
Android TV OS के लिए Jetpack Compose का इस्तेमाल करके कम से कम कोड के साथ खूबसूरत यूज़र इंटरफ़ेस (यूआई) बनाएं.

आपके ऐप्लिकेशन में उपयोगकर्ताओं के लिए कई चरणों वाले टास्क हो सकते हैं. उदाहरण के लिए, ऐसा हो सकता है कि आपके ऐप्लिकेशन को अतिरिक्त कॉन्टेंट खरीदने, जटिल कॉन्फ़िगरेशन सेटिंग सेट अप करने या फ़ैसले की पुष्टि करते हैं. इन सभी कामों के लिए, उपयोगकर्ताओं को एक या एक से ज़्यादा ऑर्डर किए गए क्रम को पूरा करना ज़रूरी है कदम या फ़ैसले.

androidx.leanback लाइब्रेरी में ऐसी क्लास दी जाती हैं जिनसे उपयोगकर्ता के कई चरणों वाले टास्क लागू किए जा सकते हैं. यह पेज इस बारे में चर्चा करता है कि GuidedStepSupportFragment क्लास के ज़रिए किसी काम को पूरा करने के लिए कई तरह के फ़ैसले लिए जा सकते हैं. GuidedStepSupportFragment अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है कई चरणों वाले टास्क को टीवी डिवाइसों पर समझने और नेविगेट करने में आसान बनाने के लिए, टीवी यूज़र इंटरफ़ेस (यूआई) के सबसे सही तरीकों का इस्तेमाल करता है.

एक चरण की जानकारी दें

GuidedStepSupportFragment से पता चलता है कि सीरीज़ में सिर्फ़ एक चरण है चरणों को पूरा करते हैं. विज़ुअल तौर पर, यह गाइड उस चरण के लिए संभावित कार्रवाइयों या फ़ैसलों की सूची.

पहला डायग्राम. निर्देशों वाले चरण का एक उदाहरण.

कई चरणों वाले टास्क के हर चरण के लिए, अवधि बढ़ाएं GuidedStepSupportFragment और इसके बारे में संदर्भ जानकारी दें उपयोगकर्ता को कौन-कौनसी कार्रवाइयां करनी चाहिए. सेटिंग में एडमिन के किए गए बदलाव onCreateGuidance() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है और नया GuidanceStylist.Guidance, जिसमें संदर्भ शामिल है जैसी जानकारी, जैसे कि चरण का टाइटल, ब्यौरा, और आइकॉन की जानकारी. जैसे, नीचे दिए गए उदाहरण में बताया गया है:

Kotlin

override fun onCreateGuidance(savedInstanceState: Bundle?): GuidanceStylist.Guidance {
    return GuidanceStylist.Guidance(
            getString(R.string.guidedstep_first_title),
            getString(R.string.guidedstep_first_description),
            getString(R.string.guidedstep_first_breadcrumb),
            activity.getDrawable(R.drawable.guidedstep_main_icon_1)
    )
}

Java

@Override
public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) {
    String title = getString(R.string.guidedstep_first_title);
    String breadcrumb = getString(R.string.guidedstep_first_breadcrumb);
    String description = getString(R.string.guidedstep_first_description);
    Drawable icon = getActivity().getDrawable(R.drawable.guidedstep_main_icon_1);
    return new GuidanceStylist.Guidance(title, description, breadcrumb, icon);
}

अपनी GuidedStepSupportFragment सब-क्लास को अपनी पसंद के मुताबिक जोड़ें कॉल करके गतिविधि GuidedStepSupportFragment.add() गतिविधि के onCreate() तरीके में.

अगर आपकी गतिविधि में सिर्फ़ GuidedStepSupportFragment है ऑब्जेक्ट को ठीक करने के लिए, GuidedStepSupportFragment.addAsRoot() का इस्तेमाल करें add() के बजाय पहले GuidedStepSupportFragment को जोड़ें. इसका इस्तेमाल किया जा रहा है addAsRoot() से यह पक्का करने में मदद मिलती है कि अगर उपयोगकर्ता टीवी देखते समय 'वापस जाएं' बटन दबाएं, तो पहले GuidedStepSupportFragment, दोनों GuidedStepSupportFragment और माता-पिता की गतिविधि बंद हो जाएगी.

ध्यान दें: जोड़ें GuidedStepSupportFragment ऑब्जेक्ट प्रोग्राम के हिसाब से, आपके लेआउट की एक्सएमएल फ़ाइलों में नहीं.

उपयोगकर्ता की कार्रवाइयां बनाना और उन्हें मैनेज करना

ओवरराइड करके उपयोगकर्ता कार्रवाइयां जोड़ें onCreateActions(). अपने बदलाव में, हर एक के लिए एक नया GuidedAction जोड़ें कार्रवाई आइटम शामिल करें और कार्रवाई स्ट्रिंग, विवरण और आईडी दें. इस्तेमाल की जाने वाली चीज़ें नई कार्रवाइयां जोड़ने के लिए GuidedAction.Builder.

Kotlin

override fun onCreateActions(actions: MutableList<GuidedAction>, savedInstanceState: Bundle?) {
    super.onCreateActions(actions, savedInstanceState)

    // Add "Continue" user action for this step
    actions.add(GuidedAction.Builder()
            .id(CONTINUE)
            .title(getString(R.string.guidedstep_continue))
            .description(getString(R.string.guidedstep_letsdoit))
            .hasNext(true)
            .build())
    ...

Java

@Override
public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
    // Add "Continue" user action for this step
    actions.add(new GuidedAction.Builder()
           .id(CONTINUE)
           .title(getString(R.string.guidedstep_continue))
           .description(getString(R.string.guidedstep_letsdoit))
           .hasNext(true)
           .build());
...

कार्रवाइयां सिर्फ़ एक लाइन में करने के लिए ही उपलब्ध नहीं हैं. यहां कुछ अन्य तरह की जानकारी दी गई है ये कार्रवाइयां की जा सकती हैं:

  • उपयोगकर्ता की पसंद के बारे में ज़्यादा जानकारी देने के लिए, जानकारी के लेबल वाली कार्रवाई जोड़ें. इसके लिए, infoOnly(true). infoOnly के सही होने पर, उपयोगकर्ता कार्रवाई को नहीं चुन सकते.
  • सेटिंग करके बदलाव करने लायक टेक्स्ट कार्रवाई जोड़ें editable(true). editable के सही होने पर, उपयोगकर्ता इसका इस्तेमाल करके चुनी गई कार्रवाई में टेक्स्ट डाल सकता है रिमोट या कनेक्ट किए गए कीबोर्ड की तरह. सेटिंग में एडमिन के किए गए बदलाव उपयोगकर्ता ने जो बदलाव किया है उसे देखने के लिए, onGuidedActionEditedAndProceed(). यह जानने के लिए कि उपयोगकर्ता कब इनपुट रद्द कर देता है, onGuidedActionEditCanceled() को भी बदला जा सकता है.
  • कार्रवाइयों का एक सेट जोड़ें, जो checkSetId() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है कार्रवाइयों को किसी सेट में ग्रुप करने के लिए एक समान आईडी मान के साथ. एक ही सूची में मौजूद सभी कार्रवाइयां चेक-सेट आईडी को लिंक किया गया माना जाता है. जब उपयोगकर्ता उस सेट में से किसी एक कार्रवाई को चुनता है, तो कार्रवाई की जांच हो जाती है और बाकी सभी कार्रवाइयों से सही का निशान हटा दिया जाता है.
  • डेट पिकर कार्रवाई जोड़ें GuidedDatePickerAction.Builder अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है के बजाय onCreateActions() में GuidedAction.Builder. सेटिंग में एडमिन के किए गए बदलाव उपयोगकर्ता की ओर से डाली गई बदलाव की तारीख का मान पाने के लिए onGuidedActionEditedAndProceed().
  • ऐसी कार्रवाई जोड़ें जिसमें सब-ऐक्शन का इस्तेमाल किया गया हो, ताकि उपयोगकर्ता एक्सटेंडेड लिस्ट में से किसी को चुन सके विकल्प. सदस्यताएं जोड़ना सेक्शन में, सदस्यताओं के बारे में जानकारी दी जाती है.
  • बटन से एक कार्रवाई जोड़ें. यह कार्रवाई सूची की दाईं ओर आसानी से की जा सकती है सुलभ है. बटन से जुड़ी कार्रवाइयों के बारे में 'जोड़ें' बटन कार्रवाइयां सेक्शन में देखें.

किसी कार्रवाई को चुनने के लिए, विज़ुअल इंडिकेटर भी जोड़ा जा सकता है एक नए चरण पर ले जाता है. hasNext(true).

सेट किए जा सकने वाले सभी अलग-अलग एट्रिब्यूट के लिए, देखें GuidedAction.

कार्रवाइयों का जवाब देने के लिए, बदलें onGuidedActionClicked() और पास हो चुके दस्तावेज़ को प्रोसेस करें GuidedAction. इसके अनुसार चुनी गई कार्रवाई की पहचान करें GuidedAction.getId() की जांच हो रही है.

सबऐक्शन जोड़ें

कुछ कार्रवाइयों के लिए, आपको उपयोगकर्ता को कुछ और विकल्प देने पड़ सकते हैं. ऐप्लिकेशन GuidedAction इनकी सूची तय कर सकता है चाइल्ड ऐक्शन के मेन्यू के तौर पर दिखने वाले सब-ऐक्शन.

दूसरा डायग्राम. निर्देशों के साथ चरणों की उप-कार्रवाइयां.

सब-ऐक्शन सूची में सामान्य कार्रवाइयां या रेडियो बटन से जुड़ी कार्रवाइयां शामिल हो सकती हैं, लेकिन डेट-पिकर या बदलाव की जा सकने वाली टेक्स्ट कार्रवाइयां नहीं हैं. साथ ही, किसी सबक्शन का अपना अलग यह सब्सक्रिप्शन का एक सेट होता है, क्योंकि सिस्टम एक से ज़्यादा लेवल की कार्रवाइयों की सुविधा नहीं देता.

सबएक्शन जोड़ने के लिए, पहले इनकी सूची बनाएं और उसे भरें GuidedAction ऑब्जेक्ट जो सबऐक्शन के तौर पर काम करते हैं, जैसा कि इस उदाहरण में दिखाया गया है:

Kotlin

subActions.add(GuidedAction.Builder()
        .id(SUBACTION1)
        .title(getString(R.string.guidedstep_subaction1_title))
        .description(getString(R.string.guidedstep_subaction1_desc))
        .build())
...

Java

List<GuidedAction> subActions = new ArrayList<GuidedAction>();
subActions.add(new GuidedAction.Builder()
       .id(SUBACTION1)
       .title(getString(R.string.guidedstep_subaction1_title))
       .description(getString(R.string.guidedstep_subaction1_desc))
       .build());
...

onCreateActions() में, एक टॉप-लेवल बनाएं GuidedAction जो चुने जाने पर सदस्यताओं की सूची:

Kotlin

    ...
    actions.add(GuidedAction.Builder()
            .id(SUBACTIONS)
            .title(getString(R.string.guidedstep_subactions_title))
            .description(getString(R.string.guidedstep_subactions_desc))
            .subActions(subActions)
            .build())
    ...

Java

@Override
public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
...
    actions.add(new GuidedAction.Builder()
           .id(SUBACTIONS)
           .title(getString(R.string.guidedstep_subactions_title))
           .description(getString(R.string.guidedstep_subactions_desc))
           .subActions(subActions)
           .build());
...
}

आखिर में, ओवरराइड करके सब-ऐक्शन का जवाब दें onSubGuidedActionClicked():

Kotlin

override fun onSubGuidedActionClicked(action: GuidedAction): Boolean {
    // Check for which action was clicked and handle as needed
    when(action.id) {
        SUBACTION1 -> {
            // Subaction 1 selected
        }
    }
    // Return true to collapse the subactions menu or
    // false to keep the menu expanded
    return true
}

Java

@Override
public boolean onSubGuidedActionClicked(GuidedAction action) {
   // Check for which action was clicked and handle as needed
   if (action.getId() == SUBACTION1) {
       // Subaction 1 selected
   }
   // Return true to collapse the subactions menu or
   // false to keep the menu expanded
   return true;
}

बटन से जुड़ी कार्रवाइयाँ जोड़ें

अगर 'निर्देशों के साथ चरण' में कार्रवाइयों की बड़ी सूची है, तो उपयोगकर्ताओं को सूची स्क्रोल करनी पड़ सकती है सबसे ज़्यादा इस्तेमाल की जाने वाली कार्रवाइयों को ऐक्सेस करने के लिए. अलग करने के लिए बटन की कार्रवाइयों का इस्तेमाल करें कार्रवाई सूची से आम तौर पर इस्तेमाल की जाने वाली कार्रवाइयां. बटन से जुड़ी कार्रवाइयाँ इसके आगे दिखती हैं कार्रवाई की सूची दिखेगी और उस पर नेविगेट करना आसान होगा.

तीसरी इमेज. निर्देश के मुताबिक चरण बताने वाले बटन से जुड़ी कार्रवाइयां.

बटन से जुड़ी कार्रवाइयां, सामान्य कार्रवाइयों की तरह ही बनाई और मैनेज की जाती हैं, लेकिन बटन से जुड़ी कार्रवाइयाँ onCreateButtonActions() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है onCreateActions() के बजाय. इसमें बटन से जुड़ी कार्रवाइयों का जवाब दें onGuidedActionClicked().

आसान कार्रवाइयों के लिए, बटन से होने वाली कार्रवाइयों का इस्तेमाल करें. जैसे, दो चरणों के बीच नेविगेट करने के लिए कार्रवाइयां करना. डेट-पिकर ऐक्शन या बदलाव की जा सकने वाली अन्य कार्रवाइयों को बटन की कार्रवाइयों के तौर पर इस्तेमाल न करें. इसके अलावा, बटन से होने वाली कार्रवाइयों में सबक्शन नहीं हो सकते.

सिलसिलेवार निर्देशों में बताए गए चरणों का ग्रुप बनाएं

GuidedStepSupportFragment एक चरण को दिखाता है. चरणों का क्रमबद्ध क्रम बनाने के लिए, एकाधिक का समूह बनाएं GuidedStepSupportFragment ऑब्जेक्ट, इनका इस्तेमाल करके एक साथ हैं जोड़ने के लिए GuidedStepSupportFragment.add() फ़्रैगमेंट स्टैक के क्रम में अगला चरण शामिल है.

Kotlin

override fun onGuidedActionClicked(action: GuidedAction) {
    val fm = fragmentManager
    when(action.id) {
        CONTINUE -> GuidedStepSupportFragment.add(fm, SecondStepFragment())
    }
}

Java

@Override
public void onGuidedActionClicked(GuidedAction action) {
    FragmentManager fm = getFragmentManager();
    if (action.getId() == CONTINUE) {
       GuidedStepSupportFragment.add(fm, new SecondStepFragment());
    }
...

अगर उपयोगकर्ता टीवी के रिमोट पर 'वापस जाएं' बटन दबाता है, तो डिवाइस फ़्रैगमेंट स्टैक पर GuidedStepSupportFragment. अगर आपको अपना GuidedAction उपलब्ध कराएँ तो पिछले चरण पर वापस आने के लिए, कॉल करके getFragmentManager().popBackStack(). अगर आपको उपयोगकर्ता को क्रम के शुरुआती चरण पर ले जाना हो, तो इसका इस्तेमाल करें popBackStackToGuidedStepSupportFragment() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है फ़्रैगमेंट स्टैक में किसी खास GuidedStepSupportFragment पर वापस जाने के लिए.

जब उपयोगकर्ता अनुक्रम का अंतिम चरण पूरा करता है, तो इसका उपयोग करें सभी को हटाने के लिए finishGuidedStepSupportFragments() GuidedStepSupportFragment इंस्टेंस मौजूदा स्टैक से हटाएं और मूल पैरंट गतिविधि पर वापस जाएं. अगर पहला GuidedStepSupportFragment जोड़ा गया addAsRoot() का इस्तेमाल करके, कॉल किया जा रहा है finishGuidedStepSupportFragments(), माता-पिता के लिए गतिविधि को भी बंद कर देता है.

चरण के प्रज़ेंटेशन को पसंद के मुताबिक बनाएं

GuidedStepSupportFragment क्लास कस्टम डाइमेंशन का इस्तेमाल कर सकती है ऐसी थीम जो प्रज़ेंटेशन से जुड़े पहलुओं को कंट्रोल करती हों. जैसे, टाइटल का टेक्स्ट फ़ॉर्मैटिंग या चरणों में ट्रांज़िशन ऐनिमेशन. कस्टम थीम यहां से इनहेरिट होनी चाहिए Theme_Leanback_GuidedStep और ये सेवाएं दे सकती हैं इसमें परिभाषित विशेषताओं के लिए ओवरराइडिंग मान GuidanceStylist और GuidedActionsStylist.

GuidedStepSupportFragment में कस्टम थीम लागू करने के लिए, इनमें से कोई एक काम करें:

  • माता-पिता की गतिविधि के लिए थीम लागू करने के लिए, android:theme एट्रिब्यूट को ऐक्टिविटी एलिमेंट शामिल है. इस एट्रिब्यूट को सेट करने पर, थीम सभी चाइल्ड पर लागू होती है व्यू. अगर माता-पिता की गतिविधि में सिर्फ़ ये चीज़ें शामिल हैं, तो कस्टम थीम लागू करने का यह सबसे आसान तरीका है GuidedStepSupportFragment ऑब्जेक्ट.
  • अगर आपकी गतिविधि में पहले से ही किसी कस्टम थीम का इस्तेमाल किया गया है और आपको उसे लागू नहीं करना है ऐक्टिविटी में अन्य व्यू के लिए GuidedStepSupportFragment स्टाइल, LeanbackGuidedStepTheme_guidedStepTheme जोड़ें एट्रिब्यूट की वैल्यू सबमिट करें. यह एट्रिब्यूट, पसंद के मुताबिक बनाई गई उस थीम के बारे में बताता है जो केवल GuidedStepSupportFragment ऑब्जेक्ट में गतिविधि का इस्तेमाल.
  • अगर GuidedStepSupportFragment ऑब्जेक्ट का इस्तेमाल अलग-अलग वर्शन में किया जाता है वे गतिविधियां जो समान सभी कई चरणों वाले टास्क का हिस्सा हैं और जो हर बार एक ही तरह के टास्क का सभी चरणों में विज़ुअल थीम, बदलें GuidedStepSupportFragment.onProvideTheme() और अपनी कस्टम थीम दिखाएं.

स्टाइल और थीम जोड़ने के तरीके के बारे में ज़्यादा जानने के लिए देखें स्टाइल और थीम.

GuidedStepSupportFragment क्लास विशेष का उपयोग करती है थीम एट्रिब्यूट ऐक्सेस करने और उन्हें लागू करने के लिए, स्टाइलिस्ट क्लास. GuidanceStylist क्लास, थीम की जानकारी का इस्तेमाल करती है बाएं दिशा-निर्देश व्यू के प्रज़ेंटेशन को कंट्रोल करने के लिए, GuidedActionsStylist क्लास, थीम की जानकारी का इस्तेमाल करती है का इस्तेमाल करें.

सब-क्लास को अपनी पसंद के मुताबिक बनाने के लिए, सब-क्लास को अपनी पसंद के मुताबिक बनाएं. GuidanceStylist या GuidedActionsStylist और अपनी सब-क्लास को इसमें वापस लाएं GuidedStepSupportFragment.onCreateGuidanceStylist() या GuidedStepSupportFragment.onCreateActionsStylist(). इन सब-क्लास में क्या-क्या कस्टमाइज़ किया जा सकता है, यह जानने के लिए GuidanceStylist और GuidedActionsStylist.