2017-11-27 4 views
0

오케이 그래서 저는 많은 액티비티를 가진 앱을 만들고 있습니다. 나는 모든 활동에 의해 접근 가능하고 편집 가능한 int를 만들고 싶다.어떤 액티비티의 int 값을 입력하십시오.

그래서 int가 "points"이고 Activity 1에서 0으로 설정됩니다. 그런 다음 Activity 2에서 0 인 점에 액세스하고 3으로 설정합니다. 그 후 Activity 3에서 점을 얻습니다. 이제는 3과 같고 2로 설정하십시오. 결국 활동 1로 돌아가서 이제는 2와 같은 점수를 얻습니다.

어떻게하면 좋을까요? 나는 약간의 연구를 해왔지만, 의도, ActivityResult, SharedPreferences, Singleton ...을 사용할 수 있다는 것을 보았습니다. 나는 어느 것이 가장 좋은 것인지 알지 못합니다.

+2

int 값을 액티비티 사이의 intent를 통해 전달하고 anyother int에 저장할 수 있으며 원하는대로 사용할 수 있습니다. 왜 하나의 int를 사용해야하나요? –

답변

1

은 MainActivity

public static int globalInteger; 

이를 만들고 의해 얻을 : 당신은 공유 환경 설정를 사용해야합니다

MainActivity.globalInteger 
1

. 당신이하는 행동이 중 하나를 사용하여 INT을 저장할 는 다음과 같이 수행하십시오 그런 다음

SharedPreferences sharedPref = getActivity().getSharedPreferences("preference_file_key", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putInt("your_key", yourInt); 
editor.commit(); 

다른 활동에서 검색하기 :

SharedPreferences sharedPref = getActivity().getSharedPreferences("preference_file_key", Context.MODE_PRIVATE); 
int yourInt=sharedPref.getInt("your_key", defaultValue); 

preference_file_key하면에서 사용하는 이름입니다 값을 저장하는 공유 환경 설정 객체에 액세스하는 활동. your_key 당신이 저장하고 검색 정수에 대한 키 값으로 사용하는 문자열이며, DEFAULTVALUE 지정된 키가없는 경우 얻을 것이다 값 yourInt입니다.

1

한 가지 방법은 싱글 톤 클래스를 사용하는 것입니다. 싱글 톤 클래스는 하나의 객체 만 생성되는 클래스입니다. 프리미티브 (int points)를이 Singleton 클래스에 넣어야합니다. 메인 클래스에서는이 싱글 톤의 인스턴스를 얻습니다. 다시 사용할 때마다 이전에 이미 생성 된 이전 객체를 얻을 수 있으므로 원하는 "point"변수를 사용할 수 있습니다.

싱글 톤의 목적은 개체 생성을 제어하여 개체 수를 1 개로 제한하는 것입니다. Singleton 인스턴스가 하나뿐이므로 Singleton의 모든 인스턴스 필드는 정적 필드와 마찬가지로 클래스 당 한 번만 발생합니다.

나는이 기사를 읽어 보시기 바랍니다 : https://www.tutorialspoint.com/java/java_using_singleton.htm

도이 문제를 해결하는 다른 방법이있을 수 있습니다.

2

싱글 톤 접근 방식과 Sarah 및 Colens이 제안한 공유 기본 설정이 모두 사용자의 필요를 해결합니다.

이제 변수의 범위가 얼마나 될지에 따라 달라집니다. 응용 프로그램이 닫힐 때 어떤 일이 발생하는지 신경 쓰지 않는다면 싱글 톤 클래스를 사용할 수 있습니다.그렇지 않으면 앱을 닫을 때 지속적이어야하고 공유 설정으로 저장 메커니즘이 필요합니다.

PD : 당연히 두 기술을 섞어서 시도해 볼 수도 있지만 (활동 결과도 잘 작동 할 수 있습니다.) 위에서 설명한 방법 중 하나를 선택하면 주어진 양의 정보를 기반으로해야합니다.

+0

감사합니다! 그리고 public static int를 사용하는 다른 제안은 어떨까요? 왜 그게 효과가 없을까요? –

+0

아니, 그게 잘 작동합니다 (당신이 그것을 저장하지 않으면 귀하의 애플 리케이션이 폐쇄되면 다시 제한) 내가 말했듯이 그것을 달성하는 수많은 방법입니다 –