2013-07-04 2 views
0

Android 애플리케이션을 개발 중이며 뒤로 버튼을 누르면 pdf 파일을 열어 동일한 작업으로 돌아와야합니다.다른 애플리케이션을 닫은 후 데이터를 복구하는 방법

문제

I 의도를 사용하여 활동을 시작,하지만 난 버튼을 다시 누르면, 내가 ActivityOne (이전 활동)에 가진 모든 데이터가 손실 된 (ActivityOne에서) 제대로 열리지 pdf 파일 . 여기

가 보여주는 PDF의 시작 활동의 내 코드입니다 :

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() 
      +"/"+ myApplication.getUsuarioActual().getFacturaActual().getPdf()); 
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.fromFile(file)); 
intent.setType("application/pdf"); 
startActivity(intent); 

은 무슨를 해결하기 위해 내가해야합니까? 동일한 응용 프로그램을 열고 닫을 때도 마찬가지입니다. 응용 프로그램으로 돌아 가면 모든 데이터가 null이라는 오류가 표시됩니다. @TheCharliemops 저를 권장

that question을 읽은 후

편집, 나는 내가 필요한 것을 알고,하지만 난 그와 관련된 또 다른 질문이 있습니다.

나는 다양한 액티비티에서 읽고 쓰는 모든 데이터를 저장하는 글로벌 애플리케이션 상태를 유지하기 위해 Application을 확장하는 클래스 myApplication을 가지고 있습니다.

내 질문에 내가 가진 모든 데이터를 myApplication에 저장해야한다면 모든 활동에 onSaveInstanceState을 사용하거나 가장 쉬운 방법이 있습니다.

답변

1

모두 환영합니다. SO!

Here @ reto-meier는 Android에서 활동 상태를 저장하는 방법을 설명합니다. 나는 그것이 당신의 문제를 해결할 수 있다고 생각합니다. 나는 비슷한 문제를 가진 미래의 사람들을 위해 그의 코드를 여기에 넣었다.

그는 코드를 다음을 보여줍니다 당신이 onSaveInstanceState(Bundle savedInstanceState)onRestoreInstanceState(Bundle savedInstanceState)를 오버라이드 (override) 할 필요가 있다고 말한다 :

레토 마이어가 말했다 :

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    // Save UI state changes to the savedInstanceState. 
    // This bundle will be passed to onCreate if the process is 
    // killed and restarted. 
    savedInstanceState.putBoolean("MyBoolean", true); 
    savedInstanceState.putDouble("myDouble", 1.9); 
    savedInstanceState.putInt("MyInt", 1); 
    savedInstanceState.putString("MyString", "Welcome back to Android"); 
    // etc. 
} 

번들은 기본적으로 NVP ("이름 - 값 쌍을"저장하는 방법입니다) 맵은, 그것은 다음과 같은 값을 onCreate에 전달 얻을 것이다 또한 onRestoreInstanceState 당신은 추출 할 위치 :

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    // Restore UI state from the savedInstanceState. 
    // This bundle has also been passed to onCreate. 
    boolean myBoolean = savedInstanceState.getBoolean("MyBoolean"); 
    double myDouble = savedInstanceState.getDouble("myDouble"); 
    int myInt = savedInstanceState.getInt("MyInt"); 
    String myString = savedInstanceState.getString("MyString"); 
} 

이것이 도움이되기를 바랍니다.

감사합니다.

+0

완벽하게 작동합니다! :) – Lyd

관련 문제