Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将数据库添加到片段_Android_Database_Android Fragments - Fatal编程技术网

Android 将数据库添加到片段

Android 将数据库添加到片段,android,database,android-fragments,Android,Database,Android Fragments,我有一个简单的数据库,里面有三星的型号和价格 public class DBHelper extends SQLiteOpenHelper implements BaseColumns { public static final String TABLE_NAME = "samsung"; public static final String NAME = "model"; public static final String MODEL_PRICE = "price"; public DB

我有一个简单的数据库,里面有三星的型号和价格

public class DBHelper extends SQLiteOpenHelper implements BaseColumns {

public static final String TABLE_NAME = "samsung";
public static final String NAME = "model";
public static final String MODEL_PRICE = "price";

public DBHelper(Context context) {
    super(context, PhoneProvider.DB_CONTACTS, null, 6);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_NAME
            + " (_id INTEGER PRIMARY KEY AUTOINCREMENT, " + NAME
            + " TEXT, " + MODEL_PRICE + " TEXT);");

    ContentValues values = new ContentValues();

    values.put(NAME, "Galaxy S4 Active");
    values.put(MODEL_PRICE, "680");
    db.insert(TABLE_NAME, NAME, values);

    values.put(NAME, "Galaxy S4");
    values.put(MODEL_PRICE, "659");
    db.insert(TABLE_NAME, NAME, values);

    values.put(NAME, "Galaxy Note II");
    values.put(MODEL_PRICE, "627");
    db.insert(TABLE_NAME, NAME, values);

    values.put(NAME, "Galaxy Mega 6.3");
    values.put(MODEL_PRICE, "581");
    db.insert(TABLE_NAME, NAME, values);

    values.put(NAME, "Galaxy S4 Zoom");
    values.put(MODEL_PRICE, "575");
    db.insert(TABLE_NAME, NAME, values);

    values.put(NAME, "Galaxy SIII");
    values.put(MODEL_PRICE, "523");
    db.insert(TABLE_NAME, NAME, values);

    values.put(NAME, "Galaxy S4 Mini Duos");
    values.put(MODEL_PRICE, "500");
    db.insert(TABLE_NAME, NAME, values);

    values.put(NAME, "Galaxy Mega 5.8");
    values.put(MODEL_PRICE, "418");
    db.insert(TABLE_NAME, NAME, values);

    values.put(NAME, "Galaxy Grand Duos");
    values.put(MODEL_PRICE, "366");
    db.insert(TABLE_NAME, NAME, values);

    values.put(NAME, "Galaxy SII Plus");
    values.put(MODEL_PRICE, "349");
    db.insert(TABLE_NAME, NAME, values);

    values.put(NAME, "Galaxy SIII Mini");
    values.put(MODEL_PRICE, "314");
    db.insert(TABLE_NAME, NAME, values);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);
} }
数据库与ContentProvider一起工作

public class PhoneProvider extends ContentProvider {

public static final String DB_CONTACTS = "phones.db";

public static final Uri CONTENT_URI = Uri.parse(
        "content://com.example.newtransaction.phoneprovider/phone");
public static final int URI_CODE = 1;
public static final int URI_CODE_ID = 2;

private static final UriMatcher mUriMatcher;
private static HashMap<String, String> mContactMap;

private SQLiteDatabase db;

static {
    mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    mUriMatcher.addURI("com.example.newtransaction.phoneprovider", 
            DBHelper.TABLE_NAME, URI_CODE);
    mUriMatcher.addURI("com.example.newtransaction.phoneprovider", 
            DBHelper.TABLE_NAME + "/#", URI_CODE_ID);

    mContactMap = new HashMap<String, String>();
    mContactMap.put(DBHelper._ID, DBHelper._ID);
    mContactMap.put(DBHelper.NAME, DBHelper.NAME);
    mContactMap.put(DBHelper.MODEL_PRICE, DBHelper.MODEL_PRICE);
}

public String getDbName() {
    return(DB_CONTACTS);
}

@Override
public boolean onCreate() {

    db = (new DBHelper(getContext())).getWritableDatabase();
    return (db == null) ? false : true;
}

@Override
public Cursor query(Uri url, String[] projection, 
        String selection, String[] selectionArgs, String sort) {

    String orderBy;       
    if (TextUtils.isEmpty(sort)) {
        orderBy = DBHelper.NAME;
    } 
    else {
        orderBy = sort;
    }

    Cursor c = db.query(DBHelper.TABLE_NAME, projection, selection, selectionArgs, 
            null, null, orderBy);
    c.setNotificationUri(getContext().getContentResolver(), url);
    return c;
}

@Override
public Uri insert(Uri url, ContentValues inValues) {

    ContentValues values = new ContentValues(inValues);

    long rowId = db.insert(DBHelper.TABLE_NAME, DBHelper.NAME, values);
    if (rowId > 0) {
        Uri uri = ContentUris.withAppendedId(CONTENT_URI, rowId);
        getContext().getContentResolver().notifyChange(uri, null);
        return uri;
    }
    else {
        throw new SQLException("Failed to insert row into " + url);
    }
}

@Override
public int delete(Uri url, String where, String[] whereArgs) {
    int retVal = db.delete(DBHelper.TABLE_NAME, where, whereArgs);

    getContext().getContentResolver().notifyChange(url, null);
    return retVal;
}

@Override
public int update(Uri url, ContentValues values, 
        String where, String[] whereArgs) {
    int retVal = db.update(DBHelper.TABLE_NAME, values, where, whereArgs);

    getContext().getContentResolver().notifyChange(url, null);
    return retVal;
}

@Override
public String getType(Uri uri) {       
    return null;
}  }
其中一个片段的代码

public class Fragment2 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    container.removeAllViews();
    return inflater.inflate(R.layout.fragment2, null);
} }
它基于Goloshchapov-GoogleAndroid一书中的一个例子。移动编程
我是Android新手

在你的片段中

public class Fragment2 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

      PhoneProvider pp =new PhoneProvider();

      pp.query(your query);


    return inflater.inflate(R.layout.fragment2, null);
} }

您需要在您的片段中添加此代码


DBHelper DBHelper=新的DBHelper(getActivity())

您的问题不清楚您到底想做什么?如果您想在多个应用程序之间进行通信,ContentProvider是有用的。要在他们之间共享数据。。。你的问题就像“如何将SQLite与android一起使用”回答:尝试一些图图,然后尝试自己找到问题的答案。只有到那个时,若你们有阻塞问题,来堆栈溢出来解除自己的阻塞/@Biraj Zalavadia我想在fragment@Yume117我试着从tuto那里找到答案,但是这个例子在一个简单的应用程序上工作,但是不能得到一个片段。这个视图的顺序通常是,了解片段,了解sqlite,然后两者一起使用。应该没有问题:/在片段和活动中使用sqlite基本上是一样的。只是说
public class Fragment2 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

      PhoneProvider pp =new PhoneProvider();

      pp.query(your query);


    return inflater.inflate(R.layout.fragment2, null);
} }