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

액티비티 전환시 빈화면이 떠서 질문드립니다 [closed]

0 추천

안녕하세요 처음 어플만들어보고 있는 학생입니다. 현재 A액티비티에서 B로 넘어가는 버튼클릭시 db의 리스트들을 띄워주는 부분에서 문제가 생겨 질문 드립니다. 처음 어플 실행시 A->B로 넘어갈때 B에 리스트들이 잘 뜨는데 B에서 뒤로갔다가 다시 A에서 버튼을 눌러 B로 가면 리스트가 뜨지않고 레이아웃만 표시됩니다.

로그로 생명주기 확인하면 B의 생명주기가 onCreate -> onResume -> onPause -> onCreate -> onResume으로 됩니다. 혹시 어느부분에서 잘못된건지 알려주실 수 있을까요?ㅠㅠ

 

public class tom extends AppCompatActivity {
    Toolbar myToolbar;
    DBHelper dbHelper ;
    static DBAdapterTom dbAdapterTom;
    SQLiteDatabase db;
    String sql;
    Cursor cursor;
    static Calendar today = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    static String getTime;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tom);
        Log.d("onCreate","호출됨");
        myToolbar = (Toolbar) findViewById(R.id.toolbar2);
        setSupportActionBar(myToolbar);
        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayShowCustomEnabled(true); //커스터마이징 하기 위해 필요
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setDisplayHomeAsUpEnabled(true); // 뒤로가기 버튼, 디폴트로 true만 해도 백버튼이 생김

        today.add(Calendar.DATE,1);
        Date tomorrow = today.getTime();
        getTime = sdf.format(tomorrow);
    }

@Override
    protected void onResume() {

        super.onResume();


        Log.d("Onresume","호출됨");
        ListView list = (ListView) findViewById(R.id.listView_tomorrow);

        Button button = (Button)findViewById(R.id.taskaddbutton);
        button.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(),MainActivity.class);
                intent.putExtra("tom",1);
                startActivity(intent); 
            }
        });

        dbHelper = new DBHelper(this,dbName,null,dbVersion);
        db = dbHelper.getReadableDatabase();
        sql = "SELECT * FROM t3 where date like '"+getTime+"' ORDER BY priority ASC;";
        cursor = db.rawQuery(sql,null);
        cursor.moveToFirst();
        Log.d("커서",""+cursor.getPosition());
        if(cursor.getCount()>0){
            while(cursor.moveToNext()){
                dbAdapterTom = new DBAdapterTom(this,cursor);
                list.setAdapter(dbAdapterTom);
            }
        }
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                cursor.moveToPosition(position);
                String str = cursor.getString(cursor.getColumnIndex("name"));
                String str1 = cursor.getString(cursor.getColumnIndex("memo"));
                Log.d("클릭",str);

            }
        });
    }
    @Override
    protected void onPause() {
        Log.d("onPause","호출됨");
        super.onPause();
    }
}

B 액티비티 입니다

Intent intent = new Intent(getApplicationContext(), tom.class);
startActivity(intent);

A 액티비티에서는 버튼 클릭시 intent로 넘겨주었습니다.

 

답변 부탁드리겠습니다ㅜㅜ 

질문을 종료한 이유: 문제해결하였습니다!
만두콩 (230 포인트) 님이 2019년 1월 30일 질문
만두콩님이 2019년 1월 30일 closed
특별한 이상은 안보입니다만,
static DBAdapterTom dbAdapterTom; 같은 static 변수가 의심 스럽습니다.
static 변수라, B Activity가 finish 가 되도 dbAdapterTom 같은 값은 살아 있기 때문에,
다시 실행되면서,  오동작 했을 가능성이 있을 듯 합니다.
감사합니다! 알려주신대로 static제거하니 원하는대로 표시가 잘 되네요^///^ 알려주셔서 감사합니다~
...