我是android的新手。 我想在我的应用程序中使用sharedpreferences。 我想使用id作为主键,以便每当我添加新的字符串值时它都会自动递增。 可以通过使用SQLite来完成,但这是一个非常漫长的任务。 我想简化我的应用程序。

insert.xml文件如下:

package com.example.shiza.dailyquranquote;

import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;


public class InsertVerse extends ActionBarActivity {
    EditText verseContent;
    EditText verseId;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_insert_verse);
    }
    public void saveVerse( View view)
    {
        verseContent = (EditText)findViewById(R.id.insertVerse);
        verseId = (EditText)findViewById(R.id.insertId);


        SharedPreferences sharedPreferences = getSharedPreferences("QuranVerse",0);

        Editor editor = sharedPreferences.edit();

        editor.putInt("id", Integer.parseInt( verseId.getText().toString()));
        editor.putString("verse", verseContent.getText().toString());

    }

}

#1楼 票数:1 已采纳

SharedPreferences不是数据库。 这是一个存储有配对键/值的文件。

因此,例如,如果您放置了对“ id” / 5,则在放置了对“ id” / 6之后,当对“ id” / 5将被新的对“ id” / 6代替。

请看一下:

http://developer.android.com/reference/android/content/SharedPreferences.html

http://developer.android.com/guide/topics/data/data-storage.html#pref

编辑1

SharedPreferences通常用于存储设置,计数器,参数,有关设备所有者的信息,...

数据库用于存储多个相同的记录,例如,用户列表,产品列表,...

#2楼 票数:1

使用SQLiteOpenHelper

http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

看到这个链接

#3楼 票数:1

SharedPreferences您不能设置主键,因为它是一个键/值对。 但是,您肯定可以为一个键设置多个值(用特殊字符分隔),例如

id: 0;1;2

name: John Smith;Rickey Watson;Martin Guptill

现在,

0 is John Smith,
1 is Ricky watson and 
2 is Marting Guptill.

这可能是您要寻找的东西...

#4楼 票数:0

需要一条记录(键)且每次添加新的String时,id计数才会增加。 但是,如果您有多个记录,请遵循@LaurentY和@ user94685231

public void saveVerse( View view)
        {
            verseContent = (EditText)findViewById(R.id.insertVerse);
            verseId = (EditText)findViewById(R.id.insertId);


            SharedPreferences sharedPreferences = getSharedPreferences("QuranVerse",0);
            int count=sharedPreferences.getInt("id",0);
            count++;
            Editor editor = sharedPreferences.edit();

            editor.putInt("id", count);
            editor.putString("verse", verseContent.getText().toString());

        }

  ask by khan translate from so

未解决问题?本站智能推荐:

4回复

在Android中使用共享首选项

我有一个关于Android应用程序的问题。 1.第一个活动包括获取用户名,然后转到下一个活动。 在“新活动”中,我必须显示经过硬编码的项目列表,用户可以单击列表并获得一个包含该项目详细信息的新活动。 也可以将其添加到他的“愿望清单”中或像购物篮一样,也可以从中删除它。 3.现在这
3回复

Android:如何使用共享首选项从SQLite检查有效登录?

我正在尝试与我的sqlite数据库实现会话(共享首选项)。 我有要保存到共享首选项的“用户名”和“密码”字段。 但是,我只想在登录有效的情况下执行此操作。 如果是有效的登录名,请登录用户(转到指定的下一个活动)并将其保存在共享首选项中。 这是我的目标; 但是,我在执行此操作时遇到了
2回复

在Android中难以将共享的首选项值存储到SQLIte并存储了空值

我想我没有关于如何执行此操作的想法。 我正在构建具有注册和登录功能的TODO应用。 登录用户后,可以在SQLite(现在)中创建新的todos任务,稍后我也想删除并重命名todos。 这是我的SQliteHelper数据库类。 将新任务添加到第二个表 待办事项 使用输入
2回复

在Gson的帮助下将Java对象存储为共享首选项,而不是使用SQLite?(机器人)

如果我想在android app中处理和保存数据库,将数据库构建为简单java对象的结构,然后使用gson将它们保存为共享首选项以将其转换为json字符串,而不是创建表是一个不好的主意在例如SQLite的实际数据库中?
4回复

如何在Android中使用共享首选项?

我在Android中使用SQLite实现切换按钮。 我想将“切换按钮”值保存在“共享首选项”中,并将共享首选项值存储在SQLite中。 当我运行应用程序时,切换按钮出现了空指针异常。 我不知道如何在共享首选项中存储布尔值。 这是我的代码和日志猫。 这是我的切换按钮代码
6回复

如何在Android上的片段中使用共享首选项?

我有一个片段,我想将 Facebook id 存储在共享首选项中。 我无法在获取首选项功能中编写私有模式。 而且我想在另一个片段中访问这个共享首选项。 我怎么能这样做? 这是我的代码...
3回复

在sqlite中存储登录状态或共享首选项

我制作应用程序,在我的应用程序中,我制作登录屏幕和注册屏幕,如果用户登录应用程序,我想存储登录状态,然后在用户注销应用程序之前他永远不会再次登录,但我也不知道共享首选项在哪里代码是实现,请给我一个合适的解决方案这是我的完整登录屏幕代码截图
1回复

更新版本并将共享的首选项转储到数据库中

我开发了一个Android应用程式1.0版,在其中以共享的偏好存储用户数据。 现在我正在开发2.0版,并且有以下有关更新它的问题 1.如何检测版本1.0是否已安装? 我的意思是说它是纯安装(直接2.0安装)还是从1.0更新 2.如果检测为1.0,我想将共享的首选项值转储到数据库中。