如何将数据从 activity 传递到 java class

How to pass data from an activity to a java class

我已经到了下面的墙上。我正在 尝试将变量从我的主 activity 传递到生成我的数据库的 java class 因为 我想在我对该数据库的一个查询中使用此变量来获取结果,然后将其传递给 Main activity。这是我的一段代码:

//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;

          }
    );
}

我的数据库的一段代码

//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;
     }
}

尽管我已经在 activity 和 class 中导入了所有 Intent 库,但 Intent 没有工作。我怎样才能实现我的目标?为什么 Intents 在这里不起作用?

任何建议和想法将不胜感激。

您无法使用 Intent 获取数据的原因是 SQLiteOpenHelper class 可能没有 getIntent() 的方法定义。我希望您 使用共享首选项 来存储数据并在您内部检索数据 SQLiteOpenHelper class.

根据您的评论,您为什么不简单地使 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);
    }

}

然后在助手 class 中,您可以简单地执行以下操作:

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

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