2012-11-05 31 views
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); 
       } 

} 
+0

你可以检查这个http://stackoverflow.com/questions/13177140/how-to-delete-item-from-arraylist-on-another-activity-update-on-previous-activ –

+0

保存为首选项,从首选项加载。 –

回答

0

onCreate被调用。如果您正在调用其他应用程序,例如相机,则操作系统可能会在相机Activity正在运行时随时杀死您自己的Activity。这可能是为了恢复正在运行的应用程序所需的内存或资源。然后,当您退出摄像机时,操作系统将重新启动您的Activity,这将再次拨打onCreate

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

0

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

或者你也可以通过VAR到相机的活动,并将它传递回来时,你用它做。只要您的应用程序启动

+0

我无法弄清楚为什么oncreate再次通过活动时运行。这非常令人沮丧。我猜我可以放一个intent.putExtra(“StationID”,checkStationObjectID);在我的startCamera()例程上。然而,我如何从onActiveityResult – TMB87

+0

后面拉回来按照其他选项保存在首选项中,然后..当你有像定位一样的配置更改时,on create可能会被调用。或者你的活动可能会被杀死,但它不应该是因为它在等待一个子活动完成,除非内存太低.. – Rejinderi

+0

你应该处理您的活动被破坏的情况下,并重新创建它应该解决您的问题..扔变量ondaveinstancestate束 – Rejinderi