2013-02-03 4 views
1

저는 ListFragments로 처음으로 작업하고 있습니다. sqlite 데이터베이스에서 데이터를 표시하고 싶습니다.ListFragment 및 컨텍스트

내 문제 : 컨텍스트를 검색 할 수 없습니다.

ListFragment-를 확장하는 클래스에서 this.getActivity()를 시도했지만 컨텍스트가 null입니다.

그런 다음 정적 변수로 내 응용 프로그램의 첫 번째 활동 (응용 프로그램을 시작한 후 표시되는 UI)의 컨텍스트를 저장하려고했습니다. 그러나 이것이 올바른 맥락인가?

static Context context; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     //Setting the context 
     context = this; 

     setContentView(R.layout.main); 
    } 

    public static Context getContext() { 
     return context; 
    } 

데이터베이스를 쿼리 할 때 예외가 발생하지 않지만 커서는 항상 비어 있습니다. 내 sqlite 데이터베이스로 보았다 - 나는 데이터의 3 행 (그래서 커서가 비어 있으면 안된다).

데이터베이스에서 데이터를 쿼리에 대한 나의 코드 : 나는 올바른 컨텍스트를 얻는 방법

Cursor cursor = null; 
     try{ 
      open(); 
      cursor = database.rawQuery("select _id, surname, prename, street, zipcode, telephone, email from "+Database.getMyDbTable()+";", null); 
     }catch(Exception ex){ 
      Log.e(TAG, "Could not get list"); 
      CharSequence text = "Die Liste kann nicht erstellt werden!"; 
      Toast toast = Toast.makeText(context, text, duration); 
      toast.show(); 
     } 
     Log.d(TAG, "Cursor "+cursor); 
     close(); 

를?

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     //Getting the data from the Database 
     Context myContext = getActivity();   
     Log.d(TAG, "Context "+myContext); 

     contactListManager = new ContactList(myContext); 
     Log.d(TAG, "ContactListManager "+contactListManager); 

     Cursor cursor = contactListManager.fetchAllItems(); 
     Log.d(TAG, "Cursor "+cursor); 
: 나는에서 onCreate 방법을 수정 한

https://github.com/artem-zinnatullin/Android-List-Fragment-Tutorial

: (나는 목록과 결합 탭 레이아웃을 가지고 원하는대로)

+0

나는 당신이 당신의 단편에 뭔가 잘못된 생각을하고 있다고 생각합니다. 귀하의 활동에 적절하게 추가 되었습니까? 그리고 this.getActivity()를 시도 할 때 표시됩니까? 그것은 null이 될 수 없습니다. –

+0

문자열 값 배열을 사용하여 ListFragment를 테스트했습니다. 이는 내 앱에 표시됩니다. 충돌이 없습니다. 누구든지 ListFragment 작업에 대한 좋은 자습서를 알고 있습니까 - 나는 주제를 이해하는 데 여전히 문제가 있음을 인정해야합니다. – user1800825

답변

2

나는 매우 도움이되었다이 튜토리얼을 발견

이 코드를 사용하면 데이터베이스에 액세스 할 수 있습니다.

0

답변 해 주셔서 감사합니다. 나는 또한 같은 문제를 사용하여 해결할 수 있다는 것을 확인했습니다. ...

컨텍스트 myContext = getActivity();

분명히 ListPreference (this)가 PreferenceFragment 내부에서 작동하지 않습니다.