इसलिए मैं अभी भी एंड्रॉइड प्रोग्रामिंग के लिए बिल्कुल नया हूं, और एक ऐप पर काम कर रहा हूं। मैंने अभी एक सेटिंग मेनू बनाया है जिसमें सभी सेटिंग्स आयोजित की जाती हैं, और मुझे एक समस्या है कि जब एक्शन बार में बैक बटन दबाया जाता है, तो ऐप क्रैश हो जाता है। अगर मैं फोन पर ही बैक बटन दबाता हूं, तो सब कुछ ठीक है, लेकिन यह तभी क्रैश होता है जब सेटिंग एक्शन बार पर बैक बटन दबाया जाता है।

मैंने अपनी MainActivity.java फ़ाइल को देखा है और मैंने देखा है कि जब मैं अपने onDestroy () फ़ंक्शन को हटाता हूं, तो यह बंद हो जाता है, हालांकि जिस तरह से मेरा ऐप काम करता है, मुझे अपने ऐप को बंद करने के लिए मेरे ऑनस्टोरी फ़ंक्शन में यह कोड होना चाहिए। जब भी मैं इसे पूरी तरह बंद करता हूं। यहाँ मेरा ऑनस्टोरी फंक्शन है:

//Kill app completely when app is closed
@Override
protected void onDestroy() {

    super.onDestroy();

        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_HOME);
        startActivity(intent);
        int pid = android.os.Process.myPid();
        android.os.Process.killProcess(pid);

}

मैंने फिनिश() और कई अन्य फ़िक्सेस कहने के लिए सामग्री को बदलने का प्रयास किया है, लेकिन कुछ भी काम नहीं करता है। यह लगभग ऐसा लगता है जैसे मुख्य पृष्ठ में कुछ भी सहेजा नहीं जा रहा है।

मेरी सेटिंग्सएक्टिविटी.जावा फ़ाइल:

public class SettingsActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings_activity);
        getSupportFragmentManager().beginTransaction().replace(R.id.settings, new SettingsFragment()).commit();
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
    }

    public static class SettingsFragment extends PreferenceFragmentCompat {

        @Override
        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
            setPreferencesFromResource(R.xml.root_preferences, rootKey);
        }
    }
}

यहां मेरा लॉगकैट है, जो वास्तव में क्या हो रहा है इसके लिए ज्यादा समझ में नहीं आता है।

2021-01-07 15:22:46.118 1881-1894/? E/memtrack: Couldn't load memtrack module
2021-01-07 15:22:46.190 1881-1966/? E/InputDispatcher: channel 'eefb3fd com.example.obd/com.example.obd.SettingsActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
2021-01-07 15:22:46.190 1881-1966/? E/InputDispatcher: channel '466b0d7 com.example.obd/com.example.obd.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
2021-01-07 15:22:46.221 2553-4044/? E/s.nexuslaunche: No package ID ff found for ID 0xffffffff.
2021-01-07 15:22:46.221 2553-4044/? E/IconLoader: Could not find icon drawable from resource
    android.content.res.Resources$NotFoundException: Resource ID #0xffffffff
        at android.content.res.ResourcesImpl.getValueForDensity(ResourcesImpl.java:225)
        at android.content.res.Resources.getDrawableForDensity(Resources.java:887)
        at android.content.res.Resources.getDrawable(Resources.java:827)
        at com.android.systemui.shared.recents.model.IconLoader.createNewIconForTask(SourceFile:118)
        at com.android.systemui.shared.recents.model.IconLoader.getAndInvalidateIfModified(SourceFile:94)
        at com.android.systemui.shared.recents.model.RecentsTaskLoader.getAndUpdateActivityIcon(SourceFile:325)
        at com.android.systemui.shared.recents.model.RecentsTaskLoadPlan.executePlan(SourceFile:188)
        at com.android.systemui.shared.recents.model.RecentsTaskLoader.loadTasks(SourceFile:173)
        at com.android.quickstep.RecentsModel.onTaskStackChangedBackground(SourceFile:214)
        at com.android.systemui.shared.system.TaskStackChangeListeners.onTaskStackChanged(SourceFile:80)
        at android.app.ITaskStackListener$Stub.onTransact(ITaskStackListener.java:50)
        at android.os.Binder.execTransact(Binder.java:731)
2021-01-07 15:22:46.309 2300-2384/? E/ModuleIdSetter: exception when setting module id
    java.lang.IllegalStateException: Unable to get current module info in ModuleManager created with non-module Context
        at com.google.android.chimera.config.ModuleManager.getCurrentModule(:com.google.android.gms@204516031@20.45.16 (100700-344294571):2)
        at afxj.a(:com.google.android.gms@204516031@20.45.16 (100700-344294571):4)
        at afxm.Y(:com.google.android.gms@204516031@20.45.16 (100700-344294571):1)
        at aftx.a(Unknown Source:0)
        at scv.a(:com.google.android.gms@204516031@20.45.16 (100700-344294571):0)
        at ryz.f(:com.google.android.gms@204516031@20.45.16 (100700-344294571):1)
        at ryx.e(:com.google.android.gms@204516031@20.45.16 (100700-344294571):1)
        at sbr.p(:com.google.android.gms@204516031@20.45.16 (100700-344294571):2)
        at sbr.v(:com.google.android.gms@204516031@20.45.16 (100700-344294571):3)
        at sbr.e(:com.google.android.gms@204516031@20.45.16 (100700-344294571):2)
        at sbv.handleMessage(:com.google.android.gms@204516031@20.45.16 (100700-344294571):71)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at afms.iD(:com.google.android.gms@204516031@20.45.16 (100700-344294571):0)
        at afms.dispatchMessage(:com.google.android.gms@204516031@20.45.16 (100700-344294571):11)
        at android.os.Looper.loop(Looper.java:193)
        at android.os.HandlerThread.run(HandlerThread.java:65)

मदद के लिए बहुत बहुत धन्यवाद!

1
N4P 8 जिंदा 2021, 00:25

1 उत्तर

सबसे बढ़िया उत्तर

हटाना:

ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
    actionBar.setDisplayHomeAsUpEnabled(true);
}

अपनी ऑनक्रेट विधि के बाहर नीचे दिए गए कोड का प्रयोग करें।

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        super.onBackPressed();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

और नीचे दी गई पंक्ति को अपनी गतिविधि में मेनिफेस्ट में जोड़ें।

        android:parentActivityName=".activity_1"

आशा है यह काम करेगा।

0
Unknown2433 8 जिंदा 2021, 09:04
हाँ, यह काम किया! मुझे मेनिफ़ेस्ट फ़ाइल में पेरेंट एक्टिविटी जोड़ने की ज़रूरत नहीं थी, क्योंकि मैंने पहले ही ".MainActivity" को मेनिफेस्ट फ़ाइल में पैरेंट एक्टिविटी के रूप में जोड़ दिया था। साथ ही, मुझे आपका कोड मेरी सेटिंग्स एक्टिविटी में जोड़ना पड़ा और यह पूरी तरह से काम करता था! इसे कॉल करना.फिनिश() या super.onBackPressed() जैसा आपने दिखाया है, उस पर भी ट्रिक किया है onOptionItemsSelected विधि।
 – 
N4P
8 जिंदा 2021, 15:45