gpt4 book ai didi

android - 通过android中的 fragment 访问数据库类

转载 作者:行者123 更新时间:2023-11-30 03:00:29 25 4
gpt4 key购买 nike

我正在尝试从我的“MainActivity.java”中的 fragment 访问 SQLite 数据库,但我的数据库函数在另一个文件“Database.java”中,因此在“MainActivity”的“onCreateView”中调用了 database_fragment.xml “无法访问那些功能...我是否应该将所有这些数据库功能直接放入 fragment 类中以便它可以看到那些?

这是我的代码的重要部分:

(在 MainActivity.java 中)

/**
* "fragment_database", shows the database list
*/
public static class subFragment extends Fragment {
public static final String ARG_MENU_NUMBER = "menu_number"; // Which sub-menu

public subFragment() {
// Empty constructor required for fragment subclasses
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
int i = getArguments().getInt(ARG_MENU_NUMBER);
View rootView;
if(i==0){
rootView = inflater.inflate(R.layout.fragment_database, container, false);
}else{
rootView = inflater.inflate(R.layout.fragment_help, container, false);
}

return rootView;
}


}

这是XML无法到达的功能:

(在数据库.java中)

    public void onClick_DisplayRecords(View v) {
displayText("Clicked display record!");

Cursor cursor = myDb.getAllRows();
displayRecordSet(cursor);
}

错误信息:

java.lang.IllegalStateException: Could not find a method onClick_DisplayRecords(View) in the activity class com.mtl.android.spca.MainActivity for onClick handler on view class android.widget.Button with id 'btnDisplay'

最佳答案

数据库是单例的一个很好的例子。

private static SomeDatabase instance=null

private SomeDatabase(Context context) {
....
}

public static SomeDatabase getInstance(Context context) {
if (instance==null) {
instance=new SomeDatabase(context);
}
return instance
}

然后你可以在任何你想用的地方使用它,只需调用 SomeDatabase.getInstance(context);

不过,这不是你的问题。您的问题是您在 XML 中指定了 android:onClick,并试图在 Fragment 中引用回调。回调仅转到 Activity。您需要在 Java 代码中执行类似的操作,主要是手动指定 OnClickListener

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
findViewById(R.id.button_id).setOnClickListener(new OnClickListener() {
@Override
public void onClick() {
nClick_DisplayRecords()
}
}
...

关于android - 通过android中的 fragment 访问数据库类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22620647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com