2010-11-19 4 views
0

onCreate()가 데이터베이스를 쿼리하고 쿼리 결과를 UI에 textviews로 표시하는 Android 활동이 있습니다.다른 활동에서 변경 한 후 android update activity textview

내가 겪고있는 문제는 사용자가 다른 활동을 열고 데이터베이스를 업데이트 할 수 있다는 것입니다. 원래 작업으로 돌아 가면 새 데이터베이스 정보로 텍스트 뷰를 업데이트하고 싶습니다. (그래서 데이터베이스를 쿼리하고 정보를 표시합니다).

내가 기꺼이하는 또 다른 일은 사용자 (새 활동)의 새 입력을 가져 와서 기존 활동의 텍스트 뷰를 직접 업데이트하는 것입니다 (기존 활동이 데이터베이스에 다시 쿼리하지 않고). 그러나 나는 그와 비슷한 것을 어떻게하는지 잘 모릅니다.

누군가가이 작업을 수행하는 가장 좋은 방법을 알려주시겠습니까? 지금까지 발견 한 유일한 솔루션은 방송 수신기와 관련이 있지만, 내가해야 할 일에 가장 적합한 것인지 확실하지 않습니다.

나는 조언을 주시면 감사하겠습니다. 감사!

답변

3

목록보기에 표시 할 데이터의 양이 크지 않은 경우 가장 간단한 해결책은 onResume() 메소드의 데이터베이스에서 다시 쿼리하는 것입니다. 이 메소드는 액티비티가 사용자에게 다시 표시 될 때 항상 호출됩니다.

BroadcastReceiver는 좋은 일이지만, 그런 간단한 작업에는 가치가 없습니다.

+0

블라디미르, 위의 게시물에 대한 내 의견을 참조하십시오. 감사! – littleK

+0

텍스트보기를 업데이트하는 데 사용하는 코드 스 니펫을 제공하십시오. –

+0

아, 걱정 마세요. 데이터베이스에서 얻은 값을 잘못 설정했습니다. 당신의 도움을 주셔서 감사합니다! – littleK

2

당신은 할 수 있습니다 :

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    db.beginTransaction(); 
    Cursor cur = null; 
    try { 
     cur = db.query("table", 
      null, null, null, null, null, null); 
     cur.moveToPosition(0); 
     String titleString = cur.getString(cur.getColumnIndex("title")); 
     db.setTransactionSuccessful(); 
    } catch (Exception e) { 
     Log.e("Error in transaction", e.toString()); 
    } finally { 
     db.endTransaction(); 
     cur.close(); 
    } 
} 

거래는 정말 빠르다. onResume() metod를 사용하여 Textview를 채울 수 있습니다.

+0

데이터베이스를 다시 쿼리하기 위해 onResume()을 사용하려고 시도했지만 TextView에서 setText()를 업데이트하려고 시도하지 않았습니다. 다른 아이디어가 있습니까? – littleK

0

onResume에서 setText를 사용하는 경우 핸들러를 통해 새로 고침/다시 그리기가 필요합니다. 내가 찾은 가장 쉬운 방법은 기본 레이아웃보기를 다시 그리는 것이 었습니다.

LinearLayout myBaseLayout = (LinearLayout)findViewById(R.id.linearlayout01); 
myBaseLayout.invalidate(); 

핸들러 메소드에 있는지 확인하십시오.