Android 无法从另一个类的内部访问某个类的方法
我有一个MainActivity和另外两个名为“TestAdapter”和“CustomAdapter”的类。 在我的主要活动中,我通常可以从访问数据库的地方调用“TestAdapter”类。 像这样:Android 无法从另一个类的内部访问某个类的方法,android,Android,我有一个MainActivity和另外两个名为“TestAdapter”和“CustomAdapter”的类。 在我的主要活动中,我通常可以从访问数据库的地方调用“TestAdapter”类。 像这样: public TestAdapter createDatabase() { mDbHelper.createDataBase(); } public TestAdapter open() { mDbHelper.openDataBase();} public void add_t
public TestAdapter createDatabase() { mDbHelper.createDataBase(); }
public TestAdapter open() { mDbHelper.openDataBase();}
public void add_to_fav(String fav_word){}
公共类MainActivity扩展了活动{
TestAdapter mDbHelper = new TestAdapter(this);
onCreate() {
mDbHelper.createDatabase();
.....
我的TestAdapter类如下所示。在该类中有不同的方法/函数:
public class TestAdapter
{
public Context mContext;
private SQLiteDatabase mDb;
private DataBaseHelper mDbHelper;
public TestAdapter(Context context)
{
this.mContext = context;
mDbHelper = new DataBaseHelper(mContext);
}
此类中有一个方法如下所示:
public TestAdapter createDatabase() { mDbHelper.createDataBase(); }
public TestAdapter open() { mDbHelper.openDataBase();}
public void add_to_fav(String fav_word){}
我创建了另一个名为CustomAdapter的类
但无法访问该类中的add_to_fav方法将数据添加到数据库中
我需要调用TestAdapter类的“add_to_fav”方法将一些数据更新到数据库中
public class CustomAdapter extends BaseAdapter
{
TestAdapter t=new TestAdapter(this);
t.add_to_fav("data")
}
但是我不能像这样访问我应该怎么做??
有人能帮上忙吗?您正在尝试创建一个新的
测试适配器
,带有参数this
,它是一个自定义适配器
只有一个构造函数将上下文
作为参数
public TestAdapter(Context context)
您必须提供适当的构造函数:
public TestAdapter(CustomAdapter adapter) { }
TestAdapter test = new TestAdapter(this);
或
您需要有一个接受上下文的CustomAdapter构造函数
public class CustomAdapter extends BaseAdapter
{
public Context mContext;
public CustomAdapter(Context context)
{
mContext = context;
}
TestAdapter t=new TestAdapter(mContext);
t.add_to_fav("data")
}
您收到的错误是什么?TestAdapter t=new TestAdapter(this);在这一行中说“构造函数TestAdapter(CustomAdapter)未定义”这是您的答案,CustomAdapter不是上下文,因此不能用作TestAdapter构造函数的参数。您已使用类型为
Context
的参数定义了构造函数。在这一行中,new TestAdapter(此)
,此
引用了CustomAdapter
的当前实例,他的TestAdapter类需要一个上下文。您建议的两个构造函数将不会帮助OP。您的上下文不可用,因为您所在的类不是从它继承的。我不知道有足够的Android提供解决方案,因此除非您获得Context
对象在CustomAdapter
的范围内,您必须修改设计。然后您需要将上下文传递到CustomAdapter
的构造函数中,并使用该构造函数初始化TestAdapter
。但是,您应该说明为什么需要上下文。传递上下文通常是错误的des的标志ign。@Simon他需要一个上下文:mDbHelper=new DataBaseHelper(mContext);
所以使用应用程序上下文而不是传递活动上下文?也许最重要的是,为什么要在适配器中使用DataBaseHelper?