如何使用Activity类以外的onActivityResult方法

我正在创build一个应用程序,我需要find用户的当前位置。

所以在这里我想做一个任务,比如当用户从系统意图返回时,我的任务应该在那之后完成(显示用户当前的位置)

所以我打算使用OnActivityResult()

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

但问题是,我不知道如何在不扩展Activity的类中使用该方法。

请有人给我想法我怎么能做到这一点?

Solutions Collecting From Web of "如何使用Activity类以外的onActivityResult方法"

您需要一个活动才能收到结果。

如果只是为了组织代码,然后从Activty类中调用其他类。

 public class Result { public static void activityResult(int requestCode, int resultCode, Intent data){ ... } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Result.activityResult(requestCode,resultCode,data); ... } 

在非Activity类中创build一个内部类,并在其中定义您的活动结果处理程序:

 class singletonActivity extends Activity{ protected void onActivityResult(...){ // do whatever .. } } 

对其进行处理以调用startActivityForResult

 Activity actv = new singletonActivity(..) actv.startActivityForResult(intent ..) 

你的处理程序将被调用。 🙂

ps:你可能必须包含一些覆盖。 只是让他们空着。

pps:这是老派java的mouseListenerAdapter风格〜Oo>

您需要注册一个Activity到这个类,然后使用OnActivityResult()为该活动。

当您使用startActivityForResult方法从一个活动开始一个活动时,只有调用者会收到结果。

所以你可以处理结果并将其传递给任务或更新该活动的UI:

 int MY_REQUEST_ID = 1; public void onClick(){ //Select a contact. startActivityForResult( new Intent(Intent.ACTION_PICK, new Uri("content://contacts")), MY_REQUEST_ID); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCose == MY_REQUEST_ID && resultCode == SUCCESS) { MyAsyncTask task = new AsyncTask(requestCode, resultCode, data); task.execute(); // or update the UI textView.setText("Hi, activity result: "+ resultCode); } } 

最后,我得到了我所需要的,也是这个问题的解决scheme。

  Activity con; Intent intent_= new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); con.startActivityForResult(intent_, 0); 

现在我可以在这里创build一个方法,

 public void startActivityForResult(Intent i, int code) { Log.e("", "insede method startActivityForResult()"); } 

通过使用这个系统不是为我的意图创build一个子活动,所以这个方法只有在用户从意图返回后才被调用。