我在一个名为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说我需要创建一个局部变量。 有人可以帮助我吗?
答案 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
菜单 选择局部变量 重构=>将局部变量转换为字段... =>行