0

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

}
4

2 回答 2

0

onCreate每当您的应用程序启动时都会调用。如果您正在调用另一个应用程序(例如相机),那么操作系统可以Activity在相机Activity运行时随时杀死您自己的应用程序。这可能是为了恢复正在运行的应用程序所需的内存或资源。然后,当您退出相机时,操作系统将重新启动您的Activity,这将onCreate再次调用。

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

于 2012-11-05T17:46:26.460 回答
0

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

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

于 2012-11-05T14:37:27.963 回答