【问题标题】:The method startActivityForResult(Intent, int) is undefined for the type ABCABC 类型的 startActivityForResult(Intent, int) 方法未定义
【发布时间】:2015-04-30 18:47:39
【问题描述】:

我有一个带有工具的 ABC 类 Serializable ABC 类是一个报警类,所以使用一堆函数,我只是想从 SD 卡上传图像,我需要在 GRIDVIEW 中查看图像然后用户需要选择 IMAGE,这就是过程 我有一个名为getImage() 的方法可以从 sd 卡中获取图像..

  public void getImage() {

    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"),1);

}   

收到错误The method startActivityForResult(Intent, int) is undefined for the type ABC 我该如何纠正这个问题?

【问题讨论】:

  • 要从非活动和非片段类开始和活动,将需要上下文并且您可以从活动中获取。

标签: android android-layout android-image android-alarms android-layout-weight


【解决方案1】:

接受非活动类中的context,并将其转换为Activity

 private Context context;
 private Activity activity;

public Example(Context context) {
    this.context = context;
    this.activity = (Activity) context;
}

然后在任何你想要的地方调用它

activity.startActivityForResult()

如果您想稍后在该处获得结果,请在非活动类中定义用户定义的onActivityResult()

public void onActivityResult(int requestCode, int responseCode,
                             Intent intent) {}

并将activity类的结果传递给用户定义的onActivityResult()方法

 @Override
protected void onActivityResult(int requestCode, int responseCode,
                                Intent intent) {
    example.onActivityResult(requestCode, responseCode, intent);
}

【讨论】:

    【解决方案2】:

    短版:startActivityForResult() 只能在活动或片段内部使用。

    如果您发布有关您想要实现的目标的更多详细信息,我可能会给您一个更有帮助的答案

    【讨论】:

    • 如何从非活动类调用?,有没有其他方法?
    • 你不能这样做,伙计,这就是系统的运作方式。但是,我没有看到您需要这样做的任何情况。如果您认为这是您唯一的解决方案,那么您可能是从错误的角度看待问题。你想达到什么目的?
    • @k3v1n4ud3 你怎么说这是不可能的。参考这个stackoverflow.com/questions/2848775/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多