【问题标题】:How to get activity result from an Activity in a TabHost?如何从 TabHost 中的 Activity 中获取活动结果?
【发布时间】:2010-12-26 14:30:57
【问题描述】:

在我的应用程序中,Activity A 会启动一个 TabActivity,而 TabActivity 的内容中有一些 Activity。

tabHost.newTabSpec("tab1").setContent( new Intent(this, ActivityB.class ) ) ...

ActivityB 会从用户那里获取一些数据(即选择一个联系人),我希望 ActivityA 会得到这些数据。但如您所见,似乎我无法通过 startyActivityForResult 和 onActivityResult 获得结果。

那么,我如何从 ActivityB 获取 ActivityA 中的数据?谢谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    我的问题再次没有答案。所以我必须自己解决。我的解决方案很丑陋但有效。有人可以猜到,我们可以编写一个单例类来存储这些数据。 ActivityB 将写入数据,而 ActivityA 将读取它。很简单。

    相比之下,我在这个网站上进行了搜索,并找到了一些简单的解决方案。赞here

    【讨论】:

      【解决方案2】:

      为要存储的对象创建一个类(即:ObjectYouWantToStore)。

      扩展 android.app.Application。

      public class MyApp extends android.app.Application {
      
      private ObjectYouWantToStore mObject;
      
      public ObjectYouWantToStore getObject() {;
          return mObject;
      }
      
      public void setObject(ObjectYouWantToStore obj) {
          mObject = obj;
      }
      
      }
      

      在清单文件中写入应用程序的路径。

      <application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".MyApp">
      

      将数据存储在您的活动 B

      MyApp app = (MyApp)getApplicationContext();
      app.setObject(ObjectYouWantToStore);
      

      在您的活动 A 中访问相同的数据

      MyApp app = (MyApp)getApplicationContext();
      ObjectYouWantToStore obj = app.getObject();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-30
        • 1970-01-01
        • 1970-01-01
        • 2023-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多