[Android]How to get results from intent launched from preference screen?

白昼怎懂夜的黑 提交于 2019-12-03 08:15:05

I got the answer, Hope it will help someone like me...

Do not mention intent while creating preference like I did in above code.. Mention intent on OnPreferenceClickListener and then do StartActivityForResult()

    // Intent preference 
   DevicePref = getPreferenceManager().createPreferenceScreen(this); 
   // Show a Screen with list of Devices Discovered 

   DevicePref.setOnPreferenceClickListener(onPreferenceClick);

   DevicePref.setTitle("Select Device"); 
   DevicePref.setSummary(mSelectedDevice); 
   deviceOptionsCat.addPreference(DevicePref); 

Then create OnPreferenceClickListner and here do StartActivityFromResult()

OnPreferenceClickListener onPreferenceClick = new Preference.OnPreferenceClickListener() {
       public boolean onPreferenceClick(Preference preference) {

           if (preference ==DevicePref )
           {
               Intent i = new Intent(DevuiceOptions.this,getDevice.class);  
               DevicePref.setIntent(i); 
               startActivityForResult(i,CHOOSE_DEVICE);

           }
           return true;
       }
   };

Finally to get the result handle onActivityResult and update Summary field.

@Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data)
   {

       switch (requestCode) {

           case Constants.CHOOSE_DEVICE:
           {
               if (data!=null )
               {
                   Bundle b = data.getExtras();
                   mSelectedDevice =    (String) b.get("Name");
                   UpdatePreferences();
               }

           }
    }
}

Thanks

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!