【发布时间】:2014-10-09 13:34:31
【问题描述】:
如何在常规 java 类中的活动上下文之外使用 startActivityForResult
前: 在主要活动中,我调用了 SampleClass 的方法。在这种方法中,我必须打开设备相机并获取图像并进行处理。
问题是控件没有转到 SampleClass 内的 onActivityResult 回调方法,而是转到 MainActivity 内的 onActivityResult 回调方法。我做错了什么?
我只需要能够处理示例类中的图像。我怎样才能做到这一点
代码片段
主要活动:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
...
SampleClass sample = new Sample(this);
sample.openCamera();
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 0){
if(resultCode == RESULT_OK){
syso("INSIDE MAIN ACTIVITY");
}
if(resultCode == RESULT_CANCELED){
...
}
}
}
}
示例类:
public class SampleClass extends Activity{
private Context context;
public SampleClass(Context context){
this.context = context;
}
public void openCamera(){
Intent photoIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
((Activity) context).startActivityForResult(photoIntent, 0);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 0){
if(resultCode == RESULT_OK){
//get the image
// process it.
syso("INSIDE SAMPLE CLASS");
}
if(resultCode == RESULT_CANCELED){
}
}
}
}
如果我运行这个程序,控制台上的输出是 INSIDE MAIN ACTIVITY。我想要的是能够获得 INSIDE SAMPLE CLASS 作为输出。
感谢和问候
【问题讨论】:
-
向我们展示 openCamera();
标签: java android android-camera-intent