2012-11-05 2 views
0

내 작성 기능에서 ID를 제공합니다. 그러나 문제는 내가 저장하기 전에 그 페이지에 사진을 추가하려고 할 때입니다. 페이지와 동일한 ID로 사진을 저장해야합니다. 그래서 ID를 생성 한 다음 그림을 추가하고 코드를 다시 실행하고 새로운 ID를 생성하는 다른 의도를로드 할 때 돌아옵니다. 사진을 통해 ID를 전달하려면 어떻게해야합니까?사진을 찍을 때마다 정적 변수를 유지하십시오.

변수 checkStationObjectID는 파일의 맨 위에 설정됩니다.

이 Heres는 내에 생성 :
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이 실행되는 동안 언제든지 OS가 자신의 Activity을 죽일 수 있습니다. 이는 실행중인 응용 프로그램에 필요한 메모리 또는 리소스를 복구 할 수 있습니다. 그런 다음 카메라를 종료하면 OS가 Activity을 다시 시작합니다. 그러면 onCreate이 다시 호출됩니다.

카메라 앱을 시작하기 바로 전에 SharedPreferences에 생성 한 ID를 저장하는 것이 좋습니다. 그런 다음 저장된 ID가 onActivityResult인지 확인하십시오.

0

당신이 그것을 지속 할 필요가없는 경우는 세션의 역할을하는 Singleton 객체를 생성 할 수 있으며, 거기에 변수를 저장 ..하지만 왜 onCreate가 다시 실행되는지 모르겠다 .. 나는 하위 카메라 활동 onActivityResult에 반환해야한다고 생각? 내가 잘못 이해하면 나는 용서했다.

또는 var를 카메라 활동에 전달하고 완료 한 후에 다시 전달할 수 있습니다.

+0

나는 활동을 다시 통과 할 때 oncreate가 다시 실행되는 이유를 제대로 이해할 수 없습니다. 상당히 실망 스럽습니다. 나는 intent.putExtra ("StationID", checkStationObjectID);를 넣을 수 있다고 생각한다. 내 startCamera() 루틴에. 그러나 어떻게 다시 그걸 onActiveityResult에서 꺼내야합니까? – TMB87

+0

환경 설정에 저장하는 다른 옵션을 따르십시오. 오리 엔테이션과 같은 구성 변경이있을 때 생성 될 수 있습니다 .. 또는 당신의 활동이 죽을 수도 있지만 그렇게해서는 안됩니다. 메모리가 너무 낮지 않으면 하위 액티비티가 완료 될 때까지 기다리는 중입니다. – Rejinderi

+0

액티비티가 파괴되고 다시 생성되면 문제를 해결해야하는 케이스를 처리해야합니다. 변수를 ondaveinstancestate – Rejinderi

관련 문제