5

मेरे पास एक मुख्य गतिविधि है और एक वरीयता सक्रियता है। मेरी पहली गतिविधि पर मैं मेनू को कॉल करता हूं और prectactForResult को कॉल करके वरीयता सक्रियता पर जाता हूं।वरीयता स्क्रीन से मुख्य गतिविधि में कैसे लौटें?

   case R.id.settings: 
       startActivityForResult(new Intent(this, SettingsActivity.class), LAUNCH_SETTINGS); 
       return true; 

तब मैं अपने सेटिंग में बदलाव और मुख्य गतिविधि पर लौट सकते हैं और मुख्य गतिविधि को देखने के नई सेटिंग्स के साथ applyed करना चाहते हैं। onPause() विधि निम्नलिखित है (, अधिकार के रूप में मैं सही समझ में इस विधि बुलाया जाएगा जब मैं बटन वापस प्रेस?)

@Override 
    protected void onPause() { 
     super.onPause(); 
     setResult(RESULT_OK, new Intent(this, MainActivity.class)); 
     finish(); 
    } 

मुख्य गतिविधि

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == LAUNCH_SETTINGS) { 
      if (resultCode == RESULT_OK) { 
       new RefreshList().execute(ACTION_SELECT); 
       Log.d(TAG, "On activity result"); 
      } 
     } 
    } 

पर लेकिन मेरे acyncTask में कहा जाता है नहीं है और लॉग मुद्रित नहीं है। मैं यह कैसे कर सकता हूं? धन्यवाद!

उत्तर

12

मेरी पहली गतिविधि पर मैं मेनू पर कॉल करता हूं और वरीयता पर जाता हूं प्रारंभिकता ForResult को कॉल करके सक्रियता।

के साथ startActivityForResult() का उपयोग करना असामान्य है। PreferenceActivity को startActivity() के साथ उपयोग करने के लिए डिज़ाइन किया गया है। यदि PreferenceActivity से शुरू होने वाला कोई वरीयता परिवर्तनों की परवाह करता है, तो उसे SharedPreferences ऑब्जेक्ट के साथ वरीयता परिवर्तन श्रोता पंजीकृत करना चाहिए।

तब मैं अपने सेटिंग में बदलाव और मुख्य गतिविधि पर लौट सकते हैं और मुख्य गतिविधि को देखने के नई सेटिंग्स के साथ applyed करना चाहते हैं।

मैं अनुशंसा करता हूं कि आप इसके बजाय SharedPreferences.OnSharedPreferenceChangeListener का उपयोग करें। या, मूल गतिविधि के onStart() या onResume() विधि में आपकी पसंदीदा प्राथमिकताओं को फिर से पढ़ें।

onPause में() विधि निम्नलिखित है (जैसा कि मैंने सही, सही समझ में इस विधि बुलाया जाएगा जब मैं बटन वापस प्रेस?)

नहीं, यह काम नहीं करेगा। onPause()setResult() पर कॉल करने में बहुत देर हो चुकी है।

+0

धन्यवाद। ऐसा करने की कोशिश करेंगे। –

संबंधित मुद्दे