我在另一个类中创建了一个方法但我不能在主类的onClick方法中使用它

时间:2010-11-01 16:30:14

标签: sql android class onclick

我在一个名为Table的类中创建了一个名为insertTable的方法,但我不能在主类的onClick方法中使用它:

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    DatabaseHelper helper = new DatabaseHelper(this);
    SQLiteDatabase db = helper.getWritableDatabase();
    Table expense = new Table(db,helper.TABLE_1);
    Table income = new Table(db,helper.TABLE_2);
    Button add_btn = (Button)findViewById(R.id.add_btn);
    EditText add = (EditText)findViewById(R.id.add);
    add_btn.setOnClickListener(this);
}

public void onClick(View v) {

}

我想在onClick方法中做一个income.insertTable但是eclipse说我需要创建一个局部变量。 有人可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

income方法中不存在变量onClick(),因为您将其声明为onCreate()的本地变量。 onClick()位于variable's scope之外。最简单的解决方案是将income“全局”设置为整个Activity的类:

public class MyClass extends Activity {
    private Table income;
    //Some other stuff here

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        DatabaseHelper helper = new DatabaseHelper(this);
        SQLiteDatabase db = helper.getWritableDatabase();
        Table expense = new Table(db,helper.TABLE_1);

        // Notice how this next line has changed; you don't
        // need to specify the type of income since it's
        // already been declared
        income = new Table(db,helper.TABLE_2);
        Button add_btn = (Button)findViewById(R.id.add_btn);
        EditText add = (EditText)findViewById(R.id.add);
        add_btn.setOnClickListener(this);
    }

    public void onClick(View v) {
        income.insertTable(someTable);
    }
}

您也可以使用onCreate()中创建的其他对象执行此操作。

答案 1 :(得分:0)

你必须使“收入”成为一个实例变量,如下所示:

public class Main {
    private Table income;

    //...
}

并更改此行:

Table income = new Table(db,helper.TABLE_2);

到此:

income = new Table(db,helper.TABLE_2);

您应该查看此资源以获取有关变量范围的信息: http://download.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

答案 2 :(得分:0)

以上答案是正确的。我想在Android范例中添加你要使用Field变量的东西。我发现在ecilpse中有效地将局部变量重构为字段的最佳方法是:

键盘快捷键 选择局部变量 SHIFT + ALT + T,V

菜单 选择局部变量 重构=>将局部变量转换为字段... =>行