본문 바로가기
IT기술(코딩)

안드로이드 스튜디오 앱 전체 글로벌 변수 application 클래스 사용방법 액티비티 간 데이터 전송

by 크리에이트매이커 2021. 7. 21.
반응형

안녕하세요 여러분~

오늘은 안드로이드 스튜디오를 사용할때 아주 기초적인 부분을 알려드리려고 해요~

 

안드로이드 스튜디오를 처음 하는 분들은 앱 제작중, 현재 액티비티의 변수를 다른 액티비티에도 사용해야 하는 경우가 대부분 발생할꺼에요.

 

이때 사용하는 클래스를 알려드리려고해요.

일단 안드로이드 스튜디오는 클로벌 변수가 있는지 모르겠지만, 잘쓰지 않아요.

 

대신에 extends Application{}  클래스를 만들고 여기에 글로벌로 사용될 변수들을 저장해서 불러온답니다.

자 그럼 바로 예시코드 갈게요

// 클래스를 생성합니다.
//extend Application을 아래저럼 익스텐스 해줍니다.
// 이 Applicaion이 어플리케이션 전체에 사용한다는 뜻입니다. 
// menifest.xml 에 추가해줘야 합니다. 예시또한 밑에 드릴게요.
// 주의할점은 한 프로젝트에 Application 클래스는 한개만 만들 수 있으니 이곳에 글로번 변수들을 잘 선언하세요.
public class FlagClass extends Application {

    private static String version; //글로벌로 사용할 변수를 선언합니다.
    

    @Override   //오버라이딩 해서 onCreate()를 만들어 줍니다. 여느 클래스와 똑같이요 ㅎㅎ
    public void onCreate() {  
        super.onCreate();
        version = "";
        
    }

    @Override  //이건 선택사항인데 일단 추가해 줍니다. 데이터 공간 낭비를 방지하기 위해 추가하고 나중에 필요하면 선언하세요.
    public void onTerminate() {
        super.onTerminate();
        instance = null;
    }


// 초기화 함수입니다. 처음 선언을 해주면 안정적으로 초기화 되서 변수가 안정적입니다.
    public void Init() {
        version = "";
        
    }

//클래스를 선언한 뒤, 다른 액티비티에서 사용될 함수 입니다. 이건 verdiosn이라는 글로벌 변수에 flag값을 넣게다는 뜻입니다.
//다른 액티비티에서 선언 방법은 밑에 써드릴게요
    public void setVersion(String flag){this.version = flag;}
    
//이것은 저장된 값을 불러오는 함수입니다ㅏ.
    public String getVersion(){return version;}
   

}

//끝 이렇게 예시로 클래스를 만들어 줍니다.

자 이렇게 클래스를 만들었으면 이제 어떻게 사용하는지 알아야 겠죠??

 

다른 액티비티에서 사용 방법의 예시 코드 바로 뿌릴게요.

//다른 액티비티 클래스

public class SplashActivity extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        //여기까지 기본 액티비티 클래스 코드죠? 
        
        
        //아까 만들 클래스를 이렇게 선언해 줍니다. 선언된 클래스의 변수 이름은 각자 다르겠죠?
        final FlagClass flag = (FlagClass)getApplication();
        flag.Init(); //이렇게 초기화를 안정적으로해줍니다.
        
        flag.setVersion("글로벌 변수 세팅"); // 이렇게 하면 FlagClass 안에 version 변수에 값이 들어갑니다.
        //이렇게 저장된 변수값은 다른 액티비티에서도 FlagClass 클래스를 선언하여 같은방법으로 사용 가능합니다.
        
        System.out.print(flag.getVersion()); // 이렇게 하면 FlagClass안에 version 변수안에 값을 불러옵니다.
        //다른 액티비티에서도 FlagClass 클래스를 선언하여 같은방법으로 사용 가능합니다.
        //다른 액티비티에서 물론 수정도 가능합니다.~
        
}
}

이제 가장 중요한 menifest.xml에 선언하는 방법을 알려드릴게요.

//menifest.xml 맨 위쪽 부분에

<application //이부분에
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:name=".FlagClass" //이렇게 선언을 해줍니다.
        //여기에 선언을 해주기 때문에 한 프로젝트에 하나의 Application 클래스만 사용가능합니다.
        android:usesCleartextTraffic="true">

이제 액티비티간 데이터 전송 방법을 이해하셨나요~?

 

그럼 폭풍 개발 하시면 될것 같습니다~~

 

많이 많이 개발해서 좋은 세상 만들어요~

 

안녕

질문은 댓글로.

반응형