2017-05-27 15 views
0

私はテーブルに格納されているユーザーの名前を送信するFragmentに情報を渡そうとしています。しかし、それはいつも空に戻って私をカーソルの場所を疑わせるものでした。Android:カーソルは常にnullを返しています

私はサンプルソリューションをオンラインで調べましたが、解決できませんでした。ここで私はこれまで何をしたか:

public DbResponse getData(){ 
    DbResponse obj = new DbResponse(); 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery("select * from " + TABLE_NAME, null); 


    cursor.moveToFirst(); 
    if (cursor!= null && cursor.getCount() > 0){ 
     // i want the name of the user here 
     obj.Dname = cursor.getString(cursor.getColumnIndex(COL_1)); 
    } 
    cursor.close(); 
    return obj; 
} 

も、私はその

public class DbResponse { 
public String Dname; 

}

と最終的に私はここでそれをキャストしようとしているクラスがあります。

public void ShowData(){ 
    DatabaseHelper db = new DatabaseHelper(getActivity()); 
    DbResponse response = db.getData(); 
    Toast.makeText(getContext(), response.Dname , Toast.LENGTH_SHORT).show(); 
} 

トーストは常に私が知っているフォントを何も返さない。 アドバイスをお願いします。ありがとう

+0

あなたの行を変更してください:SQLiteDatabase db = this.getReadableDatabase(); –

+0

まだトーストしていません。任意の提案 –

+0

あなたはmainfestで読み書き権限を追加しましたか?@Ahmad Meer –

答えて

0

データベースが正しく作成されているかどうかは、コードも正しくチェックしてください。テーブルが含まれているかどうか、テーブルに値がありますか?

質問があれば教えてください。

+0

ここでそれを絞り込んでください。数時間の検索の後、私は、API25または私の物理的な電話を使ってアンドロイドモニタを使用しているときにデータベースを見つけることができないことが分かりました。ここで私はAPI 23を使用して驚いており、完全に機能しました。どのようにそれを修正するための任意のアイデア。 –

+0

あなたは物理的なデバイスや電話のためのデータベースを見つけることができません。 avdまたはシミュレーターデバイスのデータベースを取得できます。 –

0

Ok、Finally made IT。私は実際には、コードの中間であるので、私の答えは本当に説明できませんが、

データベースヘルパーの関数のどれもがフラグメントから呼び出されていないことがわかりました。 それで、おそらく、(onAttachやActivityやContext)とBeaningは関係ないと思っていました。

誰かがそれを簡単に説明できれば、彼らが何をしているのか正確には分かりません。 私はフラグメントから収集したすべての情報を、フラグメントリスナーが実装されているメインアクティビティに送りました。そして、主な活動がDB機能を実行しました。 そしてそれは働いた:P

関連する問題