सबसे पहले, मैं जेटपैक नेविगेशन घटक - नेविगेशन ड्रॉअर का उपयोग कर रहा हूं।

और "नो एक्शन बार" मेरे ऐप की मुख्य शैली है।

    <style name="NoActionBar" parent="AppTheme">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="preferenceTheme">@style/PrefsTheme</item>
    </style>

यहाँ प्रकट है।

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xxx.xxx">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:name=".MainApplication"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".ui.MainActivity"
            android:screenOrientation="portrait"
            android:theme="@style/NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

चूंकि मैं जेटपैक नेविगेशन घटक का उपयोग करता हूं, यह एक एकल गतिविधि पैटर्न है।

सामान्य तौर पर, मेरे UI में एक कस्टम टूलबार होता है। ठीक है।

लेकिन सेटिंग्स UI के मामले में, मुझे एक समस्या का सामना करना पड़ा...

मैं जेटपैक वरीयताएँ का उपयोग कर रहा हूँ। https://developer.android.com/guide/topics/ui/settigs

मेरी सेटिंग्स UI "PreferenceFragmentCompat" का विस्तार करती है और इसे "nav_graph.xml" में भी परिभाषित किया गया है।

तो इसे नीचे दिए गए कोड से एक्सेस किया जा सकता है:

    findNavController().navigate(R.id.settingsFragment)

चूंकि मेरा ऐप "नोएक्शनबार" का उपयोग करता है, वरीयता में कोई एक्शन बार भी नहीं है। और वरीयता Jetpack Preferences द्वारा की जाती है, मैं एक कस्टम टूलबार नहीं जोड़ सकता।

क्या कोई अच्छा विचार/समाधान है, कृपया?

0
yoonhok 19 अक्टूबर 2019, 17:59

2 जवाब

कई समाधान हो सकते हैं। एक्शनबार को सही करने के लिए एक और स्टाइल बनाएं।

<style name="AppTheme.WithActionBar" parent="AppTheme">
    <item name="windowActionBar">true</item>
    <item name="windowNoTitle">false</item>
    <item name="preferenceTheme">@style/PrefsTheme</item>
</style>

फिर उस विषय को विशेष रूप से केवल मेनिफेस्ट के अंदर अपनी वांछित गतिविधि में लागू करें।

<activity
        android:name="YourActivity"
        android:theme="@style/AppTheme.WithActionBar" />
0
touhid udoy 19 अक्टूबर 2019, 18:26
मेरी प्राथमिकता उसी गतिविधि में है... आपकी राय के अनुसार, मुझे अपनी वरीयता को दूसरे एनएवी ग्राफ़ पर ले जाना चाहिए। लेकिन यह उस समाधान की तरह नहीं दिखता जो मैं चाहता हूं।
 – 
yoonhok
19 अक्टूबर 2019, 18:42
1
कृपया अपना कुछ गतिविधि कोड जोड़ें और समस्या को बेहतर ढंग से समझने के लिए आपने अपनी गतिविधि को मेनिफेस्ट में कैसे परिभाषित किया
 – 
touhid udoy
19 अक्टूबर 2019, 18:50
मैंने अपना पूरा मेनिफेस्ट कोड जोड़ा। इसकी केवल एक गतिविधि है क्योंकि मैं जेटपैक नेविगेशन घटक का उपयोग करता हूं।
 – 
yoonhok
19 अक्टूबर 2019, 19:08

मैं जेटपैक नेविगेशन ड्रॉअर का उपयोग कर रहा हूं MainActivity में Actionbar नहीं है, मुझे Actionbar के साथ वरीयता भी है, बस मैं AppTheme का उपयोग कर रहा हूं

<activity
        android:name="YourPreferenceActivity"
        android:theme="@style/AppTheme" />

नोट: यदि आप डिफ़ॉल्ट हैं तो आप थीम को PreferenceActivity में हटा सकते हैं विषय है AppTheme

बिना एक्शन बार थीम वाली मुख्य गतिविधि

<activity
            android:name="com.jca.dastuurkajsl.ui.main.MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

मेरी AppTheme इस तरह दिखती है

<style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
</style>

AppTheme.NoActionBar

<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
0
Jimale Abdi 19 अक्टूबर 2019, 19:08
हां, मैं नेविगेशन ड्रॉअर के साथ जेटपैक नेविगेशन घटक का उपयोग कर रहा हूं। लेकिन मेरी प्राथमिकता nav_graph में है।
 – 
yoonhok
19 अक्टूबर 2019, 19:10
तो मुझे लगता है कि आपने वरीयता के अंश को पकड़ने के लिए गतिविधि का उपयोग नहीं किया
 – 
Jimale Abdi
19 अक्टूबर 2019, 19:40