2017-07-08 3 views
0

Ich benutze Datenbank in einem Fragment. Jedoch, wenn ich versuche, meine Datenbank zu initialisieren die Zeile:Ich bin nicht in der Lage, Datenbank in Fragmenten in android

database=openOrCreateDatabase("firstdatabase",MODE_PRIVATE,null); 

Es mir einen Fehler gibt zu sagen:

Error:(47, 55) error: cannot find symbol variable MODE_PRIVATE

Dies ist mein Code:

public class Expenses extends Fragment{ 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View v=inflater.inflate(R.layout.expenses,container,false); 

    final SQLiteDatabase database; 
    Cursor c; 
    ArrayList<String> al=new ArrayList<>(); 

    ImageButton img=(ImageButton)v.findViewById(R.id.img); 
    final EditText commodity=(EditText)v.findViewById(R.id.commodity); 
    final EditText amount=(EditText)v.findViewById(R.id.amount); 
    ListView list=(ListView)v.findViewById(R.id.list); 

    Calendar calendar=Calendar.getInstance(); 
    final int day=calendar.get(Calendar.DAY_OF_MONTH); 
    final int month=calendar.get(Calendar.MONTH); 
    final int year=calendar.get(Calendar.YEAR); 

    registerForContextMenu(list); 
    database=openOrCreateDatabase("firstdatabase",MODE_PRIVATE,null); 

    img.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(getContext(), "Entered Successfully", Toast.LENGTH_SHORT).show(); 
      String c=commodity.getText().toString(); 
      int a=Integer.parseInt(amount.getText().toString()); 
      String q2="insert into expenses(day,month,year,commodity,amount)values('"+day+ "','" +month+ "','" +year+"','"+c+"','"+a+"');"; 
      database.execSQL(q2); 
     } 
    }); 

    String q1 = "select * from expenses"; 

    c = database.rawQuery(q1, null); 

    c.moveToFirst(); 
    do { 
     String comm = c.getString(c.getColumnIndex("commodity")); 
     String amo = c.getString(c.getColumnIndex("amount")); 

     al.add(comm + "\n" + amo); 
     ArrayAdapter ad = new ArrayAdapter(getContext(),android.R.layout.simple_list_item_1,al); 
     list.setAdapter(ad); 
    } 
    while (c.moveToNext()); 
    return v; 
} 
} 
+0

Verwenden Sie die Klasse .MODE_PRIVATE. – Adithya

+0

@Adithya bitte sagen Sie mir die komplette Codezeile dafür –

Antwort

0

Verwendung Context.MODE_PRIVATE.

Dies sollte funktionieren.

database=getActivity().openOrCreateDatabase("firstdatabase",android.content.Context.MODE_PRIVATE ,null);

+0

Nicht funktioniert noch ... gibt einen weiteren Fehler. Fehler: (51, 56) Fehler: inkompatible Typen: int kann nicht in CursorFactory konvertiert werden –

+0

die Antwort aktualisiert. Hör zu. – Adithya

+0

Funktioniert immer noch nicht. Der Fehler lautet: Fehler: (51, 61) Fehler: inkompatible Typen: int kann nicht in DatabaseErrorHandler konvertiert werden –

Verwandte Themen