2017-10-27 8 views
-2

私は問題に遭遇しました。だから、プライマリキーに基づいて私のSQLiteデータベースからデータを取得しようとしていると、私は別のアクティビティの別のtextviewsでデータの行を表示します。今、私はインテントを使用して作業していますが、問題は、私がアクティビティに行きたくない場合など、「開始アクティビティ(インテント)」を使用したくないということです。SQLiteとSharedPreferencesの組み合わせを使用

したがって、私は3つのアクティビティを持っています。ユーザーが情報を入力する最初のアクティビティをクリックし、「確認」ボタンをクリックします(データベースに保存されます)。これは2番目のアクティビティに移動します。2番目のアクティビティには「情報」ボタンがあり、次のアクティビティでこのボタンをクリックすると、データベースから取得したデータを表示します。

私は複数の投稿を読み、試しましたが、私には最高の選択肢が何であるか知っていますか?私は現在、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); 


} 

誰も私を助けることができます??

おかげ

+0

:私は持っている私が知っているデータを取得するので、私はsharedpreferencesを得ていたコードの行を変更しなければなりませんでした。一度データベースに保存しておけば、どこから取得しても問題ありません。 2番目のアクティビティでフェッチする必要はありません。 3回目のアクティビティでデータを直接取得できます。 –

答えて

0

あなたは件のデータ量が小さい場合は、最初のものを共有プリファレンスやSQLiteデータベースのいずれかを使用する必要があります。それが大きければ第2のもの。

だから、私はそれが私が試した方法を使用して作業してしまった、それはSQLiteのと共有の両方を使用していた活動1でボタンのクリックのデータベースに情報をプッシュする、とアクティビティ3

+0

私は両方を使用しようとしています。私はちょうどSQLiteを使ってみましたが、データが取得されたアクティビティに直接移動するようにアクティビティを開始すると動作しますが、そのアクティビティを直ちに表示する必要はありません。別の場所に移動したい場合は、テキストビューを使ってアクティビティを表示してデータ – TheAlmac2

+0

を表示するので、sharedpreferencesも使用しようとしました – TheAlmac2

+0

アクティビティ2の情報は取得しませんが、アクティビティ3のみ... –

0

でそれらを取得する必要があります環境設定共有設定を使用して、なぜあなたは、データベースに保存されているとき

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); 
+0

でも、共有された環境設定で値をデータベースに格納する必要はありません –

関連する問題