从另一个活动中调用函数

马格努斯

我有一个活动,其中包含用于控制数据库的所有功能,并且我希望所有其他活动在与数据库进行交互时都可以使用这些功能。以下是我的问题的一个示例。

时钟脚本:

public class Clock extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_clock);

        Data.createTable(); //<<<
    }
        //...
}

数据脚本:

public class Data extends Activity
{
    SQLiteDatabase mydb;
    private static String DBNAME = "SHIFTS.db";
    private static String TABLE = "MY_SHIFTS"; 

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_data);
    }   

    public void createTable() //<<<
    {
        try
        {
            mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);
            mydb.execSQL("CREATE TABLE IF  NOT EXISTS "+ TABLE +" (ID INTEGER PRIMARY KEY, STARTDATE TEXT, ENDDATE TEXT, LENGTH INTEGER, TYPE INTEGER);");
            mydb.close();
        }
        catch(Exception e)
        {
            Toast.makeText(getApplicationContext(), "Error in creating table", Toast.LENGTH_LONG).show();
        }
    }
    // ... lots more functions
}

错误信息:

无法从数据类型对非静态方法createTable()进行静态引用。

当我尝试使方法静态化时,只会引起更多问题。

另外,如果我尝试Data data = new Data(); data.createTable(); 我得到了NullPointerException。

这里有什么问题?

幻影

将static关键字添加到共享方法中

public static void createTable()

然后使用:

Data.createTable();

在另一个类/片段/活动中的某个位置。

我这样做,并且有效。

好吧,我的“数据”是一个普通的类,不是一个活动,但是我也有一个活动,它以相同的方式共享方法。

这是我的dbTableCreate方法:

// Create the database table if it doesn't exist
protected final static void dbTableCreate(final Context ctx)
{
    SQLiteDatabase db = null;
    try
    {
        db = ctx.openOrCreateDatabase(DB_NAME, Context.MODE_PRIVATE, null);
        db.execSQL
        (
            "CREATE TABLE IF NOT EXISTS " + DB_TABLE +
            " (date DATETIME PRIMARY KEY NOT NULL DEFAULT (CURRENT_DATE), " +
            "score INTEGER DEFAULT (null));"
        );
    }
    catch (final SQLiteException se)
    {
        System.out.println
        (
            ctx.getClass().getSimpleName() + "\n" +
                "Could not create the database"
        );
        se.printStackTrace();
    }
    finally
    {
        db.close();
    }
}

我这样称呼它:

Context ctx = getApplicationContext();
CLS_DB.dbTableCreate(ctx);

我班和你班的主要区别是我的课程被声明为

public final class CLS_DB
{
    /* ----------------------------- Constants ------------------------------ */

    private final static String DB_NAME = "pat.db";
    private final static String DB_TABLE = "tests";

    /* ------------------------------ Methods ------------------------------- */

而不是作为活动。
我没有初始化Class,它没有构造函数。
它只是共享方法的一个容器(不是,用于执行我的代码中其他地方都没有的操作)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从另一个活动中调用方法

来自分类Dev

在Android中调用另一个活动

来自分类Dev

如何从另一个活动中调用片段

来自分类Dev

从另一个活动中调用方法

来自分类Dev

从另一个活动中调用一个活动中的片段方法

来自分类Dev

在另一个函数中调用JS函数

来自分类Dev

在另一个函数中调用匿名函数

来自分类Dev

在另一个函数中调用被“隐藏”的函数

来自分类Dev

从另一个函数中调用类函数

来自分类Dev

从Go中的另一个包调用函数

来自分类Dev

从BrightScript中的另一个文件调用函数

来自分类Dev

在另一个bash脚本中调用函数

来自分类Dev

从Kivy中的另一个类调用函数

来自分类Dev

从BrightScript中的另一个文件调用函数

来自分类Dev

在另一个Lisp文件中调用函数

来自分类Dev

在Swift中从另一个类调用函数

来自分类Dev

从python中的另一个函数调用变量

来自分类Dev

在另一个函数中调用列表 - Python

来自分类Dev

调用另一个对象中的函数

来自分类Dev

Python从另一个函数调用一个函数中的函数

来自分类Dev

从另一个活动中的按钮onClick调用另一个类中的AlertDialog

来自分类Dev

根据条件调用另一个组件中的函数,无论选项卡是否处于活动状态

来自分类Dev

在PL / PGSQL中的另一个函数中调用一个函数

来自分类Dev

如何在JavaScript中的另一个函数中调用一个函数

来自分类Dev

为什么我必须从另一个函数中调用一个函数?

来自分类Dev

比在另一个函数的参数中调用一个函数更昂贵?

来自分类Dev

在Python中从一个函数调用变量到另一个函数

来自分类Dev

使用AngularJS工厂在另一个函数中调用一个函数

来自分类Dev

如何在VBA中的另一个函数内调用一个函数?

Related 相关文章

热门标签

归档