마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

여러 액티비티간 공통된 코드를 별도 클래스로 묶으려는데 context를 어떻게 써야할까요?

0 추천
안녕하세요~~현재 비슷한 액티비티가 5개 정도 있습니다. 근데 기능이 비슷해서 코드도 중복되는게 많아

별도 클래스로 뽑아서 쓸려고 하는데요..

 

1.이런놈이나

this.getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

 

2.이런놈

intentfilter = new IntentFilter();
        intentfilter.addAction(Intent.ACTION_SCREEN_ON);
        intentfilter.addAction(Intent.ACTION_SCREEN_OFF);

 

 

3. 글구 버튼 누르면 액티비티 전환시켜주는 공통된 코드..

        ibtn_setting.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it = new Intent(quiz_select.this, sound_set.class);
                it.addFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION);
                startActivityForResult(it, 1);

 

이런놈들요... 중복되는 코드들인데요

1번은 별도 클래스 static메소드로 넣으려고 하는데..  this를 호출할때, 받을때 어떻게 처리해야 할지 모르겠어요...

2번은 static메소드에 넣으려고 하니까 intentfilter에 빨간줄이... can not resolve라고 하네요..

3번은 인텐트 만드는 코드를 static메소드에 넣으려는데 quiz_select.class를 어떻게 호출하고 받아야할까요..

 

가장 궁금한건 this같은 context?정보가 들어간 부분을 어떻게 별도의 클래스의 메소드로 구현하는지가 궁금해요.. 힌트라도 좀 부탁드립니다 ㅠ
하다 (640 포인트) 님이 2019년 10월 29일 질문

2개의 답변

0 추천
별도의 클래스를 만드시고

그 클래스의 생성자에서 context를 받아서 사용하시면 됩니다.
뱅구다 (11,280 포인트) 님이 2019년 10월 29일 답변
0 추천
base activity 를 만들고 거기다가 코드를 넣으세요

class BaseActivity: AppCompatActivity() {

 

open fun setUiVisibility() {

getWindow().getDecorView().setSystemUiVisibility(

                View.SYSTEM_UI_FLAG_LAYOUT_STABLE

                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

                        | View.SYSTEM_UI_FLAG_FULLSCREEN

                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

 

}

 

open fun myIntentFilter() = IntentFileter().apply {

addAction(Intent.ACTION_SCREEN_ON)

addAction(Intent.ACTION_SCREEN_OFF)

}

 

// ...

 

}

 

이후 각각의 activity 에서 base activity 를 상속하고 사용하면 되죠

 

class YourActivity: BaseActivity() {

override fun onCreate() {

super.onCreate()

 

setUiVivibility()

}

}
aucd29 (218,390 포인트) 님이 2019년 10월 29일 답변
...