【问题标题】:How to Start an Intent for Result from a contained class of an Activity (startActivityForResult)如何从包含的 Activity 类 (startActivityForResult) 启动 Intent for Result
【发布时间】:2011-06-14 23:01:50
【问题描述】:

这是对我之前的问题的跟进: How to Start an Intent from a contained class of an Activity

基本上,我意识到我需要从 Activity 的包含类中调用 startActivityForResult(而不是 startActivity)。上一个问题的答案将 Context 从 Activity 类传递到包含的类。但是,仅上下文不足以调用StartActivityForResult

最好的方法是什么?我是否必须将整个 Activity 类传递给包含的类中的方法?

【问题讨论】:

    标签: android android-intent android-activity android-context


    【解决方案1】:

    是的。将您的 Activity 作为参数传递给包含的类。

    附:不要存储对活动的引用。根据需要传入。

    【讨论】:

      【解决方案2】:

      好吧,看看你的问题,你应该可以这样做:

      Class TestLauncher
      {
         public TestLauncher (Context c)
         {
            Intent i = new Intent(MainActivity.this, YourActivity.class)
            MainActivity.this.startActivityForResult(i, 1);
         }
      }
      

      试试看它是否有效。

      【讨论】:

      • 从他的另一个问题来看,我不认为“包含”类实际上是一个包含的内部类。它是一个单独的类,并且 Activity 中包含该类的一个实例。令人困惑和不准确的措辞,但我认为我们正在处理的就是这种情况。
      • 啊。然后传入它可能是前进的方向。
      • @LeffelMania - 你说得对,这就是我的意思......作为主类成员的对象的正确术语是什么(所以我不会混淆未来)?
      • 那么......如果你从不使用它,传递“上下文 c”有什么意义?此外,尝试执行“MainActivity.this”时,出现编译时错误:“在范围内无法访问 MainActivity 类型的封闭实例”。我认为这是因为 TestLauncher 不是嵌套类?
      • 我以为它是嵌套的。如果它只是一个普通类,那么您可能应该按照@LeffelMania 的建议做,并将您的 Activity 实例作为方法参数传递。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多