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

Background color가 적용이 되지 않습니다.

0 추천

안녕하세요

만든 의도는 기본적으로 default 배경색을 가진 상태에서, 

추후 사용자가 배경색 선택을 할 수 있는 기능을 넣어보려는데요.

어플실행시 지정한 Background color가 전혀 먹히지 않습니다.

이상한 건 화면의 우측의 Design(미리보기?) 화면에서는 default 색상이 잘 보입니다.

배경색 변경버튼은 이상없이 잘 작동되구요.. 

어떻게 처리를 해야할지 이것저것 시도를 많이 해봤는데 전부 동일한 결과네요..

<activity_main.XML>

<RelativeLayout
    android:background="@color/gray"
    android:id="@+id/bg_color"
    android:layout_width="match_parent"
    android:layout_height="595dp"
    >

<MainActivity.java> 

RelativeLayout bg = (RelativeLayout)findViewById(R.id.bg_color);
int bg_color = getIntent().getIntExtra("bg_color", 0);
bg.setBackgroundResource(bg_color)

<SubActivity.java> 

public void onClick(View v) {
    switch (v.getId()) {
        case R.id.img1:
            Intent colorIntent = new Intent(SubActivity.this,MainActivity.class);
            colorIntent.putExtra("bg_color",R.color.gray);
            startActivity(colorIntent);
            break;
        case R.id.img2:
            colorIntent = new Intent(SubActivity.this,MainActivity.class);
            colorIntent.putExtra("bg_color",R.color.yellow);
            startActivity(colorIntent);
            break;
카쇼페아 (180 포인트) 님이 2020년 5월 28일 질문
카쇼페아님이 2020년 5월 28일 수정
인텐트로 받아온값 부터 로그찍어서 확인해보세요 정상적인 값이 들어오는지
쌩초보라...로그를 보더라도..잘모르겠습니다...ㅠㅠ
인텐트는 잘먹힙니다만 기본 배경색이 안먹히네요...
 android:background="@color/gray"
Log.d("Test" , "$bg_color" )

을 메인에서 찍어보세요 그리고 저렇게 메인> 서브 > 메인으로 오실꺼면
그냥인텐트로 넘기지말고 startActivityForResult 쓰세요 ;
방향성 제시 진심으로 감사드립니다. 엄한데서 계속 삽질할뻔 했네요.
조언해주신대로 startActivityForResult 사용했는데..
이번엔 반대로 초기 화면은 되는데 서브에서 메인으로 올때 배경색값을 안가져오네요..인텐트만 되고 선택한 배경색은 안가져옵니다..
하루종일 심지어 자기전에도 생각하는데 도저히 모르겠네요...

findViewById(R.id.bg_select_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent bg_select = new Intent(MainActivity.this, SubActivity.class);
                startActivityForResult(bg_select, request_code);
            }
        });
    }

  @Override
      protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (request_code == REQUEST_CODE && resultCode == RESULT_OK) {
            int bg_color = getIntent().getIntExtra("bg_color", 1);
            bg.setBackgroundResource(bg_color);
        }
    }

case R.id.img1: //액티비티B에서 액티비티A에게 결과 리턴
                Intent colorIntent = new Intent(SubActivity.this,MainActivity.class);
                colorIntent.putExtra("bg_color",R.color.gray);
                setResult(RESULT_OK,colorIntent);
                finish();
저게 그냥 setBackgroundResource가 컬러리소스 넣으면 바로 되는지 잘 기억은 안나지만 보통 컬러값 받아와서 지정했던걸로 기억하는데,
bg.setBackgroundColor(ContextCompat.getColor(context, bg_color));
이런식으로도 해보셨나요?
답글 감사합니다...이것도 안되네요...ㅠㅠ
이 글 올렸을 때에는 다른게 문제였지 배경색 적용은 잘 됐거든요..
기존문제가 해결되니 이번엔 배경색이 안되네요..
진짜 방법이 없는건지 독학으로서는 한계가 많네요....

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...