Android 无法完成活动
Posted
技术标签:
【中文标题】Android 无法完成活动【英文标题】:Android cannot finish activity 【发布时间】:2015-01-10 13:46:04 【问题描述】:我正在使用 OpenCV android 库编写应用程序。我创建了一个我想调用的 CameraActivity,并返回一个图像。
public class CameraActivity extends Activity implements CvCameraViewListener2
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this)
@Override
public void onManagerConnected(int status)
switch (status)
case LoaderCallbackInterface.SUCCESS:
Log.i(TAG, "OpenCV loaded successfully");
mOpenCvCameraView.enableView();
break;
default:
super.onManagerConnected(status);
break;
;
@Override
public void onCreate(Bundle savedInstanceState)
...
Button snap = (Button) findViewById(R.id.snap);
snap.setOnClickListener(new OnClickListener()
public void onClick(View v)
processVideo();
);
snap.setOnLongClickListener(new OnLongClickListener()
@Override
public boolean onLongClick(View v)
processPicture();
return true;
);
@Override
public void onPause()
...
@Override
public void onResume()
...
public void onDestroy()
...
public void onCameraViewStarted(int width, int height)
...
@Override
public void onCameraViewStopped()
...
public Mat onCameraFrame(CvCameraViewFrame cvf)
// Grab frame
cvf.rgba().copyTo(frame);
// Filter frame
filterLaser();
// Retrieve contour center point
contourLaser();
// Draw
draw();
// Display the result.
return cvf.rgba();
private void draw()
...
private void filterLaser()
...
void processVideo()
...
void processPicture()
Intent result = new Intent();
if(frame != null)
// Convert the processed Mat to Bitmap
Bitmap resultBitmap = Bitmap.createBitmap(frame.cols(), frame.rows(),Bitmap.Config.ARGB_8888);;
Utils.matToBitmap(frame, resultBitmap);
setResult(Activity.RESULT_OK, result);
result.putExtra("BITMAP", resultBitmap);
else
setResult(Activity.RESULT_CANCELED); // No frame found
Log.d("LastPoint", "FINISHED");
finish();
;
使用 MainActivity 中的以下代码调用此 Activity。
Button reply = (Button) findViewById(R.id.buttonReply); reply.setOnClickListener(new OnClickListener() @Override public void onClick(View v) Intent i = new Intent(getApplicationContext(), CameraActivity.class); startActivityForResult(i, CAMERAREQUEST); );
并将结果提取到 MainActivity 中。
@覆盖 public void onActivityResult(int requestCode, int resultCode, Intent data) Log.d("LastPoint", "WRITING");
switch(requestCode)
case (CAMERAREQUEST) :
if (resultCode == Activity.RESULT_OK)
Bitmap bmp = (Bitmap) data.getParcelableExtra("Bitmap");
writeBitmap(bmp);
break;
“FINISHED”被打印到 logcat。 “写作”不是。 为什么我无法退出 CameraActivity?视图本身也没有关闭。
【问题讨论】:
你应该在setResult(Activity.RESULT_OK, result);
之前使用result.putExtra("BITMAP", resultBitmap);
,而不是之后。
谢谢!但这并不能解决我的问题。
您是否尝试将 Log 放入 if(frame != null) 块中,以确保它通过那里?
我做了,并再次验证。它正在过去。
检查***.com/questions/5302085/…
【参考方案1】:
问题出在这条线:
result.putExtra("BITMAP", resultBitmap);
通过将图片保存到我的 CameraActivity 中的 sdcard 并通过结果意图传递 Uri 来解决它。
【讨论】:
以上是关于Android 无法完成活动的主要内容,如果未能解决你的问题,请参考以下文章