2017-07-16 77 views
0

我有两个活动和多个数据库类,我想在从Activity1到Activity2并在Activity2中加载DatabaseAdapter类时从extras中传递数据库类的名称。通常情况下,我使用使用额外传递的字符串调用SQLiteOpenHelper

DatabaseAdapter databaseadapter = new DatabaseAdapter(this); 

这可行,但效率不高。

1)Activity1:导致Activity2。在extras中,它将以字符串形式传递“DatabaseAdapter”。

2)在我的第二个活动中,我想使用这个DatabaseAdapter类的方法来扩展SQLiteOpenHelper类。

我试过使用Class<?> c = Class.forName("mypackage.MyClass"); 但是这会抛出未处理的异常:java.lang.class not found。

回答

1

您的解决方案是不正确,而不是通过类名来使用另一个活动,你可以从DatabaseAdapter创建新实例并使用,也可以从创建单一实例,并使用每一个地方要

+0

的问题是我在Activity1中有一个列表视图。这就像Quiz1 Quiz2 Quiz3 ....点击每个元素开始一个测验(Activity2),每个测验都有它的数据库。我传递一个字符串,并使用如果条件在活动2中是这样的:if(string.equals(“Quiz1”)){DatabaseAdapter1 databaseadapter = new DatabaseAdapter1(this); } if(string.equals(“Quiz2”)){DatabaseAdapter2 databaseadapter = new DatabaseAdapter2(this); }等等。它有效,但代码变得很长。 –

+0

@HasanSaykın而不是使用数据库使用表,例如tableQuiz1,tableQuiz2和搜索从'putExtra'传递的每个活动,如选定的测验 –

+0

因此,你建议我有一个大的数据库类里面充满了表?但我想保留我的表在单独的类(关于性能和易于编辑) –