я создал метод в другом классе, но я не могу использовать его в своем методе onClick из основного класса - PullRequest
0 голосов
/ 01 ноября 2010

Я создал метод с именем insertTable в классе с именем Table, но я не могу использовать его в своем методе 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) {

}

Я хочу сделать доход.insertTable в методе onClick, но затмение говорит, что мне нужно создать локальную переменную. Может кто-нибудь помочь мне, плз?

Ответы [ 3 ]

0 голосов
/ 01 ноября 2010

Вы должны сделать «доход» переменной экземпляра, например:

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

0 голосов
/ 01 ноября 2010

Ответы выше верны.Я просто хотел бы добавить в парадигму Android, что вы собираетесь использовать переменные поля совсем немного.Лучший способ, которым я нашел, чтобы эффективно преобразовать локальные переменные в поля в ecilpse:

Сочетание клавиш Выберите локальную переменную Shift + Alt + t, v

МенюВыберите локальную переменную Refactor => Преобразовать локальную переменную в поле ... => OK

0 голосов
/ 01 ноября 2010

Переменная income не существует в методе onClick(), поскольку вы объявили ее как локальную для onCreate().onClick() находится вне области действия .Самым простым решением было бы сделать 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().1012 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...