在我的创建功能上,我给位置一个ID。不过我的问题是在我保存之前将照片添加到该页面。我需要使用与页面相同的ID保存照片。所以我在创建时创建了ID然后当我添加图片并返回时,因为它加载了另一个意图它再次运行代码并创建一个新的ID。如何通过照片传回ID并返回。
变量checkStationObjectID设置在文件的顶部。
继续我的创造:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_asset);
Bundle extras = getIntent().getExtras();
Log.e("CamDebug", "Loading extras");
if (extras != null) {
PreviousStationObjectID = extras.getString("StationObjectID");
editMode = extras.getBoolean("editMode");
editAreaObjectID = extras.getString("editAreaObjectID");
}
if(editMode){
checkStationObjectID = editAreaObjectID;
Log.e("CHECK ID - Edit mode", checkStationObjectID);
} else {
if(checkStationObjectID == null){
checkStationObjectID = NewAssetStationObjectID;
Log.e("CHECK ID = NEW ID", checkStationObjectID);
}
}
//Other items taken out
}
我用以下方式启动相机:
public void startCamera()
{
File photo = null;
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
{
photo = new File(Global.Pictures + timestamp +".png");
}
else
{
photo = new File(getCacheDir(), FOLDER_NAME+File.separator+timestamp+".png");
}
if (photo != null)
{
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
selectedImageUri = Uri.fromFile(photo);
startActivityForResult(intent, CAPTURE_IMAGE_CALLBACK);
}
}
答案 0 :(得分:0)
如果您不需要保留它,您可以创建一个Singleton对象作为会话并将变量存储在那里..但我不明白为什么onCreate再次执行..我认为子摄像机活动应该返回onActivityResult?如果我误解了,我原谅我。
或者您可以将var传递给相机活动,并在完成后将其传回。
答案 1 :(得分:0)
onCreate
。如果您正在调用另一个应用程序(如相机),则操作系统可以在相机Activity
运行时随时终止您自己的Activity
。这可能是恢复正在运行的应用程序所需的内存或资源。然后,当您退出相机时,操作系统将重新启动Activity
,这将再次拨打onCreate
。
我建议您在启动相机应用程序之前将生成的ID保存到SharedPreferences
。然后在onActivityResult
中检查已保存的ID。