Android SQLite使用Fragment

时间:2016-08-11 06:05:05

标签: android sqlite

我尝试在Fragment中使用SQLite。但总是错误。我知道我的语法不是很好,我应该从Party对象中保存而不是直接从片段接口保存,但我的重点是在过程中。任何帮助都会非常有帮助!在这里我的代码。我尝试使用getActivity()但不起作用。

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

}

这是界面屏幕:

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;
}

以下是Android Studio的错误。

  

错误:(81,25)错误:类MainMenu中的方法updateDisplay无法应用于给定类型;   必需:片段   发现:UserFragment   原因:实际参数UserFragment无法通过方法调用转换转换为Fragment

我在MainMenu.java中使用案例

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

任何?谢谢你的帮助:)抱歉英语不好

1 个答案:

答案 0 :(得分:0)

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

在Fragments中,您需要覆盖onCreateView方法以设置视图。在此返回您在片段

中显示它的视图

最好的解释

  1. fragments with transactions

  2. usage