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

DB 존재유무에 따라 다른 액티비티를 보여주려고 합니다!

0 추천

오늘의 메뉴 클릭 시 , (default) 미등록 화면 (TodayMenu.class)이 나오고 등록 버튼을 클릭하면

등록 화면(Register.class)이 나오고 등록 완료 버튼을 누르면

오늘의 메뉴 추천 화면(Recommend.class)이 나옵니다. 여기까지는 잘 구현된 것 같습니다.

문제는, 후에 앱을 종료했다 실행시키거나 혹은 다른 메뉴에 들어갔다 다시 오늘의 메뉴로 복귀 했을 때,

등록된 상태이므로 미등록 화면이 아닌 오늘의 메뉴 추천 화면으로 바로 나오게 하고 싶은데

이 부분에서 자꾸 오류가 발생하는 것 같습니다 ㅠㅠㅠㅠㅠㅠ

 

<MainActivity.java>

public void onBtnMenuClicked(View v) {
    DBAdapter adb = new DBAdapter(this, DBAdapter.SQL_CREATE_MEMBER, "human");
    if(adb == null) {
        Intent intent = new Intent(getApplicationContext(), TodayMenu.class); // db가 null이면 미등록 화면
        startActivity(intent);
   }
    else {
        Intent intent = new Intent(getApplication(), Recommend.class); // null이 아니면 메뉴 추천화면
        startActivity(intent);
    }
}

<Register.java>

public class Register extends Activity implements OnClickListener {

    private Button bt;
    private EditText et1;
    private CheckBox ch1, ch2, ch3;

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

        bt = (Button)findViewById(R.id.btnOk);
        et1 = (EditText)findViewById(R.id.txtname);
        ch1 = (CheckBox)findViewById(R.id.chbstomach);
        ch2 = (CheckBox)findViewById(R.id.chbappetite);
        ch3 = (CheckBox)findViewById(R.id.chbintestine);

        bt.setOnClickListener(this);
    }

    public void onClick(View v){
        if(v == bt) {
            String name = et1.getText().toString();
            String disease = "";

            if(ch1.isChecked()) {
                disease = (String)ch1.getText();
            } else if (ch2.isChecked()) {
                disease = (String)ch2.getText();
            } else if (ch3.isChecked()) {
                disease = (String)ch3.getText();
            }

            DBAdapter adb = new DBAdapter(this, DBAdapter.SQL_CREATE_MEMBER, "human");
            adb.open();

            ContentValues values = new ContentValues();

            values.put("name", name);
            values.put("disease", disease);

            adb.insertTable(values);

            adb.close();

            Intent intent = new Intent(this, Recommend.class);
            startActivity(intent);
        }
    }

}

 

최초 실행 시 MainActivity코드를

Intent intent = new Intent(getApplicationContext(), TodayMenu.class);

startActivity(intent);로 한 후

다음 번 실행 시

if(adb == null) {
    Intent intent = new Intent(getApplicationContext(), TodayMenu.class);
    startActivity(intent);
}

else {
     Intent intent = new Intent(getApplication(), Recommend.class); 
     startActivity(intent);
}
로 실행하면 원하는대로 나오는데,

문제는 if문이 들어가있는 코드로 최초 실행을 하면 앱이 자꾸 죽습니다 ㅠㅠ

문제점이나 해결 방법을 알려주신다면 정말 감사하겠습니다 ㅠㅠ

샐리 (440 포인트) 님이 2016년 10월 18일 질문
exception 올려야 알겠죠?

답변 달기

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