2016-08-11 5 views
0

Ich versuche, SQLite in Fragment zu verwenden. Aber immer Fehler. Ich weiß, dass meine Syntax nicht großartig ist und ich sollte von einem Party-Objekt statt direkt von der Fragment-Schnittstelle speichern, aber mein Fokus liegt wirklich auf dem Prozess. Jede Hilfe wäre super hilfreich! Hier mein Code. Ich versuche mit getActivity(), aber nicht arbeiten.Android SQLite mit Fragment

public class DataHelper extends SQLiteOpenHelper { 

private static final String DATABASE_NAME = "biodatadiri.db"; 
private static final int DATABASE_VERSION = 1; 
public DataHelper(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    // TODO Auto-generated constructor stub 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 
    String sql = "create table biodata(no integer primary key, nama text null, tgl text null, jk text null, alamat text null);"; 
    Log.d("Data", "onCreate: " + sql); 
    db.execSQL(sql); 
    sql = "INSERT INTO biodata (no, nama, tgl, jk, alamat) VALUES ('1001', 'Fathur', '1994-02-03', 'Laki-laki','Jakarta');"; 
    db.execSQL(sql); 

} 

@Override 
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { 
    // TODO Auto-generated method stub 

} 

Und hier ist die Schnittstelle Bildschirm:

public class UserFragment extends Fragment { 

String[] daftar; 
ListView ListView01; 
Menu menu; 
protected Cursor cursor; 
DataHelper dbcenter; 
public static UserFragment ma; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.user_fragment); 

    Button btn=(Button)findViewById(R.id.button2); 

    btn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      Intent inte = new Intent(UserFragment.this, BuatBiodata.class); 
      startActivity(inte); 
     } 
    }); 


    ma = this; 
    dbcenter = new DataHelper(this); 
    RefreshList(); 
} 

public void RefreshList(){ 
    SQLiteDatabase db = dbcenter.getReadableDatabase(); 
    cursor = db.rawQuery("SELECT * FROM biodata",null); 
    daftar = new String[cursor.getCount()]; 
    cursor.moveToFirst(); 
    for (int cc=0; cc < cursor.getCount(); cc++){ 
     cursor.moveToPosition(cc); 
     daftar[cc] = cursor.getString(1).toString(); 
    } 
    ListView01 = (ListView)findViewById(R.id.listView1); 
    ListView01.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, daftar)); 
    ListView01.setSelected(true); 
    ListView01.setOnItemClickListener(new OnItemClickListener() { 


     public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { 
      final String selection = daftar[arg2]; //.getItemAtPosition(arg2).toString(); 
      final CharSequence[] dialogitem = {"Lihat Biodata", "Update Biodata", "Hapus Biodata"}; 
      AlertDialog.Builder builder = new AlertDialog.Builder(UserFragment.this); 
      builder.setTitle("Pilihan"); 
      builder.setItems(dialogitem, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int item) { 
        switch(item){ 
         case 0 : 
          Intent i = new Intent(getApplicationContext(), LihatBiodata.class); 
          i.putExtra("nama", selection); 
          startActivity(i); 
          break; 
         case 1 : 
          Intent in = new Intent(getApplicationContext(), UpdateBiodata.class); 
          in.putExtra("nama", selection); 
          startActivity(in); 
          break; 
         case 2 : 
          SQLiteDatabase db = dbcenter.getWritableDatabase(); 
          db.execSQL("delete from biodata where nama = '"+selection+"'"); 
          RefreshList(); 
          break; 
        } 
       } 
      }); 
      builder.create().show(); 
     }}); 
    ((ArrayAdapter)ListView01.getAdapter()).notifyDataSetInvalidated(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

Hier ist Fehler von Android Studio.

Error:(81, 25) error: method updateDisplay in class MainMenu cannot be applied to given types; required: Fragment found: UserFragment reason: actual argument UserFragment cannot be converted to Fragment by method invocation conversion

Ich benutze Fall in MainMenu.java

case R.id.navigation_item_user: 
        updateDisplay(new UserFragment()); 
        break; 

jedermann? Vielen Dank für Ihre Hilfe :) Sorry für schlechtes Englisch

+0

posten Sie Ihre logcat –

+0

Haben Sie Probleme mit dem richtigen Kontext? – Sush

+0

welche Zeile erhalten Sie Fehler auch post logcat –

Antwort

0
setContentView(R.layout.user_fragment); // this call should be made only activity. 

In Fragments you need to override onCreateView method to setup view. In this return the view that you show it in fragment

Beste erklärt hier

  1. fragments with transactions

  2. usage

+0

Können Sie mit Beispiel erklären? –