1

私はListFragmentsで初めて作業しています。sqliteデータベースのデータを表示したい。

私の問題:コンテキストを取得できません。

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(); 

適切なコンテキストを取得するにはどうすればよいですか?

4

2 に答える 2

2

私はこのチュートリアルを見つけました。これは非常に役に立ちました(タブレイアウトをリストと組み合わせたいので):

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

onCreateメソッドを変更しました:

@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);

このコードを使用して、データベースにアクセスできます。

于 2013-02-04T17:22:46.263 に答える
0

ご回答有難うございます!を使用しても同じ問題を解決できることを確認しました...

コンテキストmyContext=getActivity();

どうやらListPreference(this)はPreferenceFragmentの内部からは機能しません。

于 2013-06-28T03:00:31.900 に答える