Java 在拍照和回来的过程中保持一个静态变量

Java 在拍照和回来的过程中保持一个静态变量,java,android,camera,Java,Android,Camera,在我的On create函数中,我给了位置一个ID。然而,我的问题是,在保存照片之前,我要向该页面添加照片。我需要用与页面相同的ID保存照片。因此,我在创建时在上创建ID,然后当我添加图片并在加载其他意图时返回,它会再次运行代码并创建一个新ID。我如何通过照片传递ID并返回 变量checkStationObjectID设置在文件的顶部 以下是我对创建的看法: public void onCreate(Bundle savedInstanceState) { super.onCre

在我的On create函数中,我给了位置一个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);
               }

}

如果不需要持久化,可以创建一个单例对象作为会话,并将变量存储在其中。。但我不明白为什么再次执行onCreate。。我认为子摄像头活动应该返回onActivityResult?如果我误解了,请原谅


或者,您可以将var传递给摄影机活动,并在完成后将其传回

无论何时启动应用程序,都会调用onCreate。如果您正在调用另一个应用程序(如照相机),则操作系统可以在照相机
活动
运行时随时终止您自己的
活动。这可能是为了恢复正在运行的应用程序所需的内存或资源。然后,当您退出相机时,操作系统将重新启动
活动
,该活动将再次调用
onCreate


我建议您在启动摄像头应用程序之前,将生成的ID保存到
SharedReferences
。然后在
onActivityResult

中检查保存的ID。您可以将此另存为首选项,从首选项加载。我不太明白为什么oncreate在返回活动时再次运行。这很令人沮丧。我猜我可以放一个意图;在我的startCamera()例程中。但是,如何从OnActivityResults中提取该选项?请按照其他选项保存在首选项中,然后。。当您进行配置更改(如方向)时,可能会调用on create。。或者您的活动可能会被终止,但不应该被终止,因为它正在等待子活动完成,除非内存太低。您应该处理活动被销毁并重新创建的情况。它应该解决您的问题。。将变量放入ondaveinstancestate包中