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

DB 관련해서 질문 드립니다!

0 추천

오늘의 메뉴 클릭 시 미등록화면(TodayMenu.class / default)이 뜨고,

등록 버튼을 클릭하면 등록화면(Register.class)이 뜨고,

등록 완료하면 추천화면(Recommend.class)가 뜨도록 구현하고 싶습니다 ㅠ_ㅠ

 

화면 간 이동은 자연스럽게 되는 것을 확인했는데, 문제점은

mainactivity에서 오늘의 메뉴 클릭 시 DB가 존재하면(=이미 등록되었으면) 추천화면(Recommend.class)이,

DB가 존재하지 않으면(=미등록 상태면) 미등록화면(TodayMenu.class)가 뜨는 부분에서 오류가 납니다.

 

MainActivity.java

public void onBtnMenuClicked(View v) {
    DBAdapter adb = new DBAdapter(this, DBAdapter.SQL_CREATE_MEMBER, "customer");
    if(adb == null) {
        Intent intent = new Intent(getApplicationContext(), TodayMenu.class);
        startActivity(intent);
   }
    else {
        Intent intent = new Intent(getApplication(), Recommend.class);
        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, "customer");
            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);
        }
    }

}

Recommend.java

public class Recommend extends Activity {

    TextView mname, mdisease;
    ImageView imgtest;
    String sdisease;

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

        mname = (TextView)findViewById(R.id.tvname);
        mdisease = (TextView)findViewById(R.id.tvdisease);
        imgtest = (ImageView)findViewById(R.id.img);

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

        String columns[] = {"name", "disease"};
        Cursor c = adb.selectTable(columns, null, null, null, null, null);

        if(c.moveToFirst()){
            do{
                mname.setText(c.getString(c.getColumnIndex("name")));
                mdisease.setText(c.getString(c.getColumnIndex("disease")));
                sdisease = mdisease.getText().toString();
            } while (c.moveToNext());
        }

        if(sdisease.equals("식욕부진"))
        {
            imgtest.setImageResource(R.drawable.com_appetite);
        }
        adb.close();
    }

    public void onBtnHomeClicked(View v) {
        Intent intentHome = new Intent(this, MainActivity.class);
        intentHome.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intentHome.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(intentHome);
        finish();
    }

    public void onBtnBackClicked(View v){
        finish();
    }
}

오류

해결 방법 알려주신다면 정말 정말 감사하겠습니다ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

 

 

샐리 (440 포인트) 님이 2016년 10월 28일 질문
에레메세지를 잘 보시길 바랍니다. Recommend class 의 41번째 라인에서 NullPointerException이 나고 있네요. 정확하게 어디가 41번째 라인인지는 모르겠는데,
adb가 null인 것으로 추측은 됩니다만, 정확한 것은 41번째 라인에 break point를 걸어놓고 디버깅을 해보세요.

답변 달기

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