简体   繁体   English

我想使用来自不同类的数据库,我该如何在 JAVA 中做到这一点? (AndroidStudio/Java)

[英]I want so use a Database from different classes, how can I do that in JAVA? (AndroidStudio/Java)

Im struggling with the following problem:我正在努力解决以下问题:

I have to classes, MainClass and SecondClass.我要上课,MainClass 和SecondClass。

In the MainClass I create a database (mDatabase) and I am inserting data to the database.在 MainClass 中,我创建了一个数据库 (mDatabase),并将数据插入到数据库中。

public class MainActivity extends AppCompatActivity{
public SQLDatabase dbHelper; //created class to initialize my database
public SQLiteDatabase mDatabase;


public void onCreate(Bundle savedInstanceState){
        dbHelper = new SQLDatabase(this);
        mDatabase = dbHelper.getWritableDatabase();
        mDatabase.insert(....);
}

Now I want to display the data from the database (mDatabase) in a different Activity.现在我想在不同的 Activity 中显示来自数据库(mDatabase)的数据。 So, I have to use the variable mDatabase from another class, because I am using a recyclerView in a different Activity, this is why:所以,我必须使用来自另一个 class 的变量 mDatabase,因为我在不同的 Activity 中使用了 recyclerView,这就是为什么:

public class SecondActivity{

    public void onCreate(){
        recyclerView=findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        mAdapter = new AdapterClass(this, getAllItems());
        recyclerView.setAdapter(mAdapter);
    }

    public Cursor getAllItems(){

    return mDatabase.query(....);
    }


}

I want to have one Activity where I type in data for the database, and I want to have a second Activity where I can display the inserted data.我想要一个 Activity 来为数据库输入数据,我想要第二个 Activity 来显示插入的数据。

Do you know how I can use the mDatabase from two classes?你知道我如何使用两个类的 mDatabase 吗?

Open a new database connection in the other activity.在其他活动中打开一个新的数据库连接。

Variables and objects cannot be shared between activities unless they are static (and compatible with that use case: objects that need an Activity Context will cause problems and leaks if made static), or Serializable and you provide it as a parameter.变量和对象不能在活动之间共享,除非它们是static (并且与该用例兼容:需要活动上下文的对象如果设为静态将导致问题和泄漏),或者可Serializable并且您将其作为参数提供。

You can also consider Fragments : that will allow to create the mDatabase connection in your containing Activity and reuse it from your Fragments , or place the Database connection at the Application Level, if the database connection can be initialized with an Application context.您还可以考虑Fragments :这将允许在您的包含Activity中创建mDatabase连接并从您的Fragments重用它,或者如果数据库连接可以使用应用程序上下文初始化,则将数据库连接放在应用程序级别。

  1. Create your own Application class.创建您自己的应用程序 class。
    public class TestApplication extends Application { 

            public static SQLDatabase dbHelper; 
            public static SQLiteDatabase mDatabase;

            @Override
            public void onCreate() {
                super.onCreate();
                initDb();
            }

            public void initDb() {
                dbHelper = new SQLDatabase(this);
            mDatabase = dbHelper.getWritableDatabase();
            mDatabase.insert(....);
            }

            public static SQLiteDatabase getDb()  {
                return mDatabase;
            }
        }
  1. Add you Application class to AndroidManifest under Application tag将您的应用程序 class 添加到应用程序标签下的 AndroidManifest

    <application android:name="TestApplication"

  2. Use it from your activities:在您的活动中使用它:

    TestApplication.getDb()

If it helped please mark as answered:)如果有帮助,请标记为已回答:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用 AndroidStudio 中的 Java 方法从 Firebase 实时数据库读取值? - How can I read values from Firebase Realtime Database by using a Java method in AndroidStudio? 我如何在 Java 的不同类中使用相同的 object - How can i use same object in different classes in Java 如何将学生添加到名册中(来自Java中的不同班级)? - How do I add students to a roster (from different classes in Java)? 如何在Java中设计和接口(OOP类型),以便我可以使用直接数据库访问或使用Web服务? - How do I Design and Interface (OOP kind) in Java so that I can either use direct database access or use web services? 如何从 Java 中的 2 个不同类访问变量 - How can I access variables from 2 different classes in Java 如何使用NetBeans中导入的库中的类(java) - How do I use classes from an imported library in netbeans (java) AndroidStudio:java。 如何将 arraylist 返回到主要活动? - AndroidStudio: java. How can i return an arraylist to main activity? 如何在AndroidStudio中从原始文件夹播放mp3file时修复java.lang.NullPointerException? - How do i fix java.lang.NullPointerException in playing mp3files from a raw folder in AndroidStudio? 如何在java中使用来自不同方法的变量? - How do I use variables from different method in java? 我如何在java中使用来自不同文件的类? - How do i use a class from a different file in java?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM