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

setResult사용시 데이터 받아오는 오류 질문이요 ㅠㅠ [closed]

0 추천

기본설명을 하자면 액티비티는 2개

Main ---- Sub 입니다.

메인의 텍스트뷰를 눌러 리스너를 통해 Sub액티비티로 이동하여

Sub의 특정 텍스트뷰를 누르면 그에 해당하는 값을 넘겨오는 것입니다. 그런데 도저히 이해가 안가게

오류가납니다. 바로 돌아올때 '취소'를 누르면 Sub가 안정적으로 꺼지는데, '완료'를 누르면 오류와 함께

앱이 꺼집니다. 계속 보는데 문법상 수정할것도 없는거 같고, 해결이 안되고있습니다. 도와주십쇼..

1. Main

TextView t;
int color;
static final int GET_STRING = 1;
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    t = (TextView)findViewById(R.id.a1);
    t.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this,ColorSet.class); 
            startActivityForResult(intent, GET_STRING);
        }
    });
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == GET_STRING){
        if (resultCode == RESULT_OK) {
            String text = data.getStringExtra("SELECT_COLOR");
            switch (text) {
                case "hotPink":
                    color = Color.argb(150, 255, 000, 153);
                    t = (TextView) findViewById(id);
                    t.setBackgroundColor(color);
                case "pink":
                    color = Color.argb(150, 255, 204, 204);
                    t = (TextView) findViewById(id);
                    t.setBackgroundColor(color);
            }}}
}

2. Sub

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_color_set);

    Button bt_ok=(Button)findViewById(R.id.bt_ok);
    Button bt_cancel=(Button)findViewById(R.id.bt_cancel);

    bt_ok.setOnClickListener(new myButtonClick());
    bt_cancel.setOnClickListener(new myButtonClick());
}
class myButtonClick implements View.OnClickListener {
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.bt_ok:
                String color = "pink";
                Intent in = new Intent();
                in.putExtra("SELECT_COLOR", color);
                setResult(RESULT_OK, in);//오류발생
                finish();
            case R.id.bt_cancel:setResult(RESULT_CANCELED); finish();
        }
    }
}
질문을 종료한 이유: 잘못올렸습니다.
맹꾸 (500 포인트) 님이 2015년 12월 29일 질문
맹꾸님이 2015년 12월 29일 closed
...