在整个拍照和回来时保持一个静态变量

时间:2012-11-05 14:12:47

标签: java android camera

在我的创建功能上,我给位置一个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);
               }

}

2 个答案:

答案 0 :(得分:0)

如果您不需要保留它,您可以创建一个Singleton对象作为会话并将变量存储在那里..但我不明白为什么onCreate再次执行..我认为子摄像机活动应该返回onActivityResult?如果我误解了,我原谅我。

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

答案 1 :(得分:0)

每当您的应用程序启动时,都会调用

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

我建议您在启动相机应用程序之前将生成的ID保存到SharedPreferences。然后在onActivityResult中检查已保存的ID。