【发布时间】:2011-10-13 15:14:37
【问题描述】:
我正在为 String selectedImagePath 声明一个全局变量。单击按钮时,我正在调用视频捕获代码
Intent intent=new Intent("android.media.action.VIDEO_CAPTURE");
intent.putExtra("android.intent.extra.durationLimit", 120);
startActivityForResult(intent, REQUEST_VIDEO_CAPTURED);
OnActivity 结果我正在获取视频路径
selectedImagePath = getPath(selectedImageUri);
onActivityResult 代码 我在这里得到了正确的价值
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
// TODO Auto-generated method stub
if(resultCode==RESULT_OK)
{
if(requestCode==REQUEST_VIDEO_CAPTURED)
{
Toast.makeText(VideoPostActivity.this, "Video Recorded", Toast.LENGTH_LONG).show();
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
System.out.println("selected image path"+selectedImagePath);
/* imgPublishVideo.setEnabled(true);
imgRecordVideo.setEnabled(false);*/
}
}
if(resultCode == RESULT_CANCELED)
{
Toast.makeText(VideoPostActivity.this, "Cancelled!", Toast.LENGTH_LONG).show();
}
}
我在这里没有得到价值
SetMyVideoPostAsyncTask myVideoPostAsyncTask=new SetMyVideoPostAsyncTask(VideoPostActivity.this,videoTitle,videoComment,selectedImagePath);
myVideoPostAsyncTask.execute();
public String getPath(Uri uri)
{
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
if(cursor!=null)
{
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
else
return null;
}
但我无法从活动中传递 selectedImagePath 值,它会变为 null 任何人都可以告诉我有什么问题吗?我该怎么办?
【问题讨论】:
-
你能发布 OnActivityResult 代码吗?
-
将您的意图值/附加内容更改为常量而不是硬编码字符串。这样,如果 android 更改它们,您将不必修复您的代码: Intent intent=new Intent(MediaStore.ACTION_VIDEO_CAPTURE); intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT,120); startActivityForResult(intent, REQUEST_VIDEO_CAPTURED);
-
另外,您可以简单地执行 cursor.getString(0); 而不是浪费对 getColumnIndexOrThrow 的调用。并删除您的 int column_index = ...;因为永远不会有任何其他行
-
您可以为 SetMyVideoPostAsyncTask 发布更多代码吗?这是类中的一个类,它持有“onActivityResult”还是它自己的单独类?如果它是单独的,您将不得不将您的 selectedPath 字符串传递给它。
-
@dymmeh 它是一个单独的类,我已经传递了值
标签: android