![](/img/trans.png)
[英]How can I read values from Firebase Realtime Database by using a Java method in AndroidStudio?
[英]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
重用它,或者如果數據庫連接可以使用應用程序上下文初始化,則將數據庫連接放在應用程序級別。
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;
}
}
將您的應用程序 class 添加到應用程序標簽下的 AndroidManifest
<application android:name="TestApplication"
在您的活動中使用它:
TestApplication.getDb()
如果有幫助,請標記為已回答:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.