2016-09-03 6 views
0

私は以下の壁に達しました。私は私の主な活動から、データベースを生成するJavaクラスに変数を渡そうとしています。この変数をデータベースのクエリの1つで使用して結果を得て、それをメインアクティビティに渡したいからです。 。私が活動し、クラス内のすべてのテントのライブラリをインポートしているにもかかわらず、私のデータベースアクティビティからjavaクラスにデータを渡す方法

//DatabaseHelper 
public class DatabaseHelper extends SQLiteOpenHelper{ 

public Cursor showResults(){ 

    SQLiteDatabase db = this.getWritableDatabase(); 

    //the intent does NOT work 
    Bundle bundle = getIntent().getExtras(); 

    Cursor results = db.rawQuery("select * from "+TEMP_TABLE+"where value = " + selectedAvgStds , null); 
    return results; 
    } 
} 

意図が働いていないのコードの

//MainActivity 

public class MainActivity extends AppCompatActivity { 

    private static RadioGroup selectedAvgStds; 
    ...... //rest of the code/// 


    public void onClickListenerButton(){ 


    selectedAvgStds = (RadioGroup)findViewById(R.id.controlAverageOfLiving); 

    showResults.setOnClickListener(


     int avgStdLiving  = selectedAvgStds.getCheckedRadioButtonId(); 
     selectedAvgStdsRb  = (RadioButton) findViewById(avgStdLiving); 

     //variable that I want to pass 
     String avgStdLivingText = (String) selectedAvgStdsRb.getText(); 

     switch (option) { 
      case "one": 
       Intent intent = new Intent(MainActivity.this,DatabaseHelper.class); 
       Intent.putExtra("values",avgStdLivingText); 
       startActivity(intent); 
      break; 

      } 
    ); 
} 

ワンピース:ここでは、コードの私の作品です。目標を達成するにはどうすればいいですか?なぜインテントがここで動作しないのですか?

どんな提案やアイデアも非常に高く評価されます。

+0

DatabaseHelperクラスはアクティビティではないため、startActivity()を呼び出すと動作しません。/データベースヘルパを初期化する場所はどこですか? –

+0

'showResults()'メソッドのパラメータ設定はどうですか? –

+0

あなたのロジックに欠陥があり、 'startActivity(intent);を使用して明らかに' DatabaseHelperが 'Activity'ではなくSQLiteOpenHelperを拡張しているので、動作しません。しかし、私はそれを変更するつもりはありません。なぜあなたのアクティビティに 'DatabaseHelper'のインスタンスを持っていて、あなたのメソッドが可変パラメータを取るのではないのですか? –

答えて

1

、なぜあなたは単にDatabaseHelperインスタンス変数を作成し、以下のようにあなたのshowResults方法をパラメータ化していない:

public class MyActivity extends Activity { 

    private DatabaseHelper myDatabaseHelper; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //initialise your helper here 
     myDatabaseHelper = ... 
    } 

    public void onClickListenerButton(){ 

     // All your other stuff here... 

     // variable that I want to pass 
     String avgStdLivingText = selectedAvgStdsRb.getText().toString(); 
     myDatabaseHelper.showResults(avgStdLivingText); 
    } 

} 

そして、ヘルパークラス内では、単に行うことができます。

public Cursor showResults(String selectedAvgStds){ 
     SQLiteDatabase db = this.getWritableDatabase(); 

     Cursor results = db.rawQuery("select * from "+TEMP_TABLE+"where value = " + selectedAvgStds , null); 
     return results; 
    } 
} 
0

インテントを使用してデータを取得できない理由は、SQLiteOpenHelperクラスにgetIntent()のメソッド定義がない可能性があるためです。 共有優先設定を使用してデータを保存し、SQLiteOpenHelperクラス内で取得することをお勧めします。あなたのコメントを1として

+0

共有環境設定でこれをどのように達成できますか? –

関連する問題