簡體   English   中英

我想使用來自不同類的數據庫,我該如何在 JAVA 中做到這一點? (AndroidStudio/Java)

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

我正在努力解決以下問題:

我要上課,MainClass 和SecondClass。

在 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(....);
}

現在我想在不同的 Activity 中顯示來自數據庫(mDatabase)的數據。 所以,我必須使用來自另一個 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(....);
    }


}

我想要一個 Activity 來為數據庫輸入數據,我想要第二個 Activity 來顯示插入的數據。

你知道我如何使用兩個類的 mDatabase 嗎?

在其他活動中打開一個新的數據庫連接。

變量和對象不能在活動之間共享,除非它們是static (並且與該用例兼容:需要活動上下文的對象如果設為靜態將導致問題和泄漏),或者可Serializable並且您將其作為參數提供。

您還可以考慮Fragments :這將允許在您的包含Activity中創建mDatabase連接並從您的Fragments重用它,或者如果數據庫連接可以使用應用程序上下文初始化,則將數據庫連接放在應用程序級別。

  1. 創建您自己的應用程序 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. 將您的應用程序 class 添加到應用程序標簽下的 AndroidManifest

    <application android:name="TestApplication"

  2. 在您的活動中使用它:

    TestApplication.getDb()

如果有幫助,請標記為已回答:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM