从另一个.java文件中的类调用方法

时间:2012-03-05 06:45:20

标签: android

我试着调用另一个类的方法,它在同一个包中,但是当我在手机上测试时,它会强行关闭。

基本上我创建一个LocalSQLite类的对象,sqlite并使用sqlite.method() 下面是我的代码:

Sqlitetest2Activity.java

package com.test.test;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

public class Sqlitetest2Activity extends Activity {
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    LocalSQLite sqlite = new LocalSQLite();
    sqlite.createTable();        
    }
}

LocalSQLite.java

package com.test.test;

import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Toast;

public class LocalSQLite extends Activity {
    SQLiteDatabase mydb;
    private static String DBNAME = "city.db";    // SQLITE DATABASE FILE NAME.
    private static String TABLE = "citytable";       // TABLE NAME

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

/* DROPS TABLE */
public void dropTable(){
    try{
        mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);
        mydb.execSQL("DROP TABLE " + TABLE);
        mydb.close();
    }catch(Exception e){
        Toast.makeText(getApplicationContext(), "Error encountered while dropping table.", Toast.LENGTH_LONG);
    }
}

/* THIS FUNCTION INSERTS DATA TO THE DATABASE */
public void insertIntoTable(String city_id, String city_name){
    try{
        mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);
        mydb.execSQL("INSERT INTO " + TABLE + "(ID, CITY) VALUES('"+city_id+"','"+city_name+"')");
        mydb.close();
    }catch(Exception e){
        Toast.makeText(getApplicationContext(), "Error in inserting into table", Toast.LENGTH_LONG);
    }
}
}

4 个答案:

答案 0 :(得分:2)

您无法实例化Activity的类对象。要调用方法,您可以做的是 -

将方法设置为static,并使用LocalSQLite.createTable();

调用它

我在你的LocalSQLite类中看到了另一个错误。当没有与之关联的屏幕时,您不必扩展Activity。所以只需删除扩展活动,这应该可以解决您的问题! : - )

如果您有任何问题,请与我们联系。

答案 1 :(得分:0)

阅读本文......

Application Components

...尤其是关于Activities的一点。 Activity可能是一个Java类,但它是一个“特殊”类,不应该使用new进行实例化。不仅如此,它还是一个用于提供UI的类,而不是您尝试将其用于SQLite处理的一般助手类。

尝试扩展SQLiteOpenHelper

答案 2 :(得分:0)

您无法像这样实例化一个Activity。不要让LocalSQLite扩展Activity,它会正常工作。

答案 3 :(得分:0)

您是否尝试过Android提供的SQLiteOpenHelper课程用户?它将自动创建和更新您不必创建和对象的数据库,并自行运行它。

有人说......可能是导致错误的TEXT,我想你想要的是VARCHAR。