使用SQLite和SharedPreferences

时间:2017-10-27 12:24:20

标签: java android sqlite

我遇到了一个问题。所以我试图从我的SQLite数据库中获取基于主键的数据,然后我将在另一个活动的单独文本视图中显示数据行。现在,我使用Intents工作,但问题是我不想使用“startactivity(intent)”,例如因为我不想去活动,我只想发送数据。

所以,在上下文中,我有3个活动。用户填写信息的第一个活动,然后单击“验证”按钮(保存到数据库)。这会将它们带到第二个活动,它将在其上显示“信息”按钮,当在下一个活动上单击此按钮时,我想要显示我从数据库中检索到的数据。

我已阅读并试过多个帖子,但是有谁知道我最好的选择是什么?我目前正在尝试使用SQLite和SharedPreferences的组合。

获取和保存数据的活动1的代码:

 Button Progress1 = (Button) findViewById(R.id.progressBar);

    Progress1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            res = myDb.getProgressBar1(); //gets the data from the database

            if (res.moveToFirst()) {

                String LTget = res.getString(res.getColumnIndex("LINETYPE"));
                String PT = res.getString(res.getColumnIndex("PACKAGETYPE"));
                String QTY = res.getString(res.getColumnIndex("QUANTITY"));
                String DUR = res.getString(res.getColumnIndex("DURATION"));
                String ST = res.getString(res.getColumnIndex("STARTTIME"));
                String ET = res.getString(res.getColumnIndex("ENDTIME"));

                SharedPreferences.Editor editor = sharedPreferences.edit();

                editor.putString(LTkey, LTget);
                editor.putString(PTkey, PT);
                editor.putString(qtykey,QTY);
                editor.putString(durkey, DUR);
                editor.putString(STkey, ST);
                editor.putString(ETkey, ET);
                editor.commit();


                Intent intent = new Intent(Dashboard.this, Actforfragmentname.class); //takes me to the second activity
                startActivity(intent);

检索数据的代码:(不确定是否从sharedpref获取,因此尝试了一行)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.verify_line);
    myDb = new DatabaseHelper(this);
    sqLiteDatabase = myDb.getReadableDatabase();

    TextView LTTextView = (TextView)    findViewById(R.id.textViewspinner1);
    TextView PTTextView = (TextView)    findViewById(R.id.textViewspinner2);
    TextView QTYTextView = (TextView)   findViewById(R.id.textViewQuantity);
    TextView DURTextView = (TextView)   findViewById(R.id.textViewDuration);
    TextView STTextView = (TextView)    findViewById(R.id.textViewStartTime);
    TextView ETTextView = (TextView)    findViewById(R.id.textViewendtime);

    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    String LT =(sharedPreferences.getString(LTkey, LTget));



    LTTextView.setText(LT);
    PTTextView.setText(PT);
    QTYTextView.setText(QTY);
    DURTextView.setText(DUR);
    STTextView.setText(ST);
    ETTextView.setText(ET);


}

任何人都可以帮帮我吗?

由于

2 个答案:

答案 0 :(得分:0)

您应该使用共享首选项或SQLite数据库,如果您有少量数据,则应使用第一个数据库。第二个,如果它更大。

因此,您应该在活动1中按下按钮时在数据库中推送信息,并在活动3中检索它们。

答案 1 :(得分:0)

我通过使用我正在尝试的方法并且同时使用SQLite和共享首选项来实现它。我不得不改变我获得共享偏好的代码行,以便检索我所知道的数据:

 SharedPreferences sharedPreferences = getSharedPreferences(MyPREFERENCES, MODE_PRIVATE);

    String LT = sharedPreferences.getString(LTkey, null);
    String PT = sharedPreferences.getString(PTkey, null);
    String QTY = sharedPreferences.getString(qtykey, null);
    String DUR = sharedPreferences.getString(durkey, null);
    String ST = sharedPreferences.getString(STkey, null);
    String ET = sharedPreferences.getString(ETkey, null);