2011-12-22 5 views
0

У меня есть класс, который представляет свою деятельность и есть объект, которые выглядят какМожете ли вы закончить() действие с объекта?

public class main extends Activity{ 
    //Does stuff 
    } 

    public class Object{ 
    //I want to call finish() here 
    } 

Есть ли способ сделать это?

+1

Ваша конструкция немного странно. Как объект передаст сигнал? Для статического поля? Почему объект, который не имеет отношения к Activity, пытается его завершить? –

ответ

1

Вы можете заставить объект иметь конструктор, принимающий параметр Activity, и передать экземпляр своей деятельности при создании экземпляра класса Object.

Пример:

class MyObject { 
    private Activity act; 
    public Object(Activity act) { this.act = act;} 

    public doStuff() { 
     // do stuff 
     act.finish(); 
    } 
} 

//usage in some code inside your activity: 
MyObject obj = new MyObject(this); 
obj->doStuff(); 
+0

Я не использую этот объект в активности, так что это может оказаться затруднительным. Я думаю, что самый простой способ решить это - использовать цикл while и оператор if для завершения вызова только тогда, когда объект посылает сигнал через логический флаг. Я надеялся, что есть лучшая альтернатива. – eBehbahani

+0

Ваш дизайн немного странный. Как объект передаст сигнал? Для статического поля? Почему объект, который не имеет отношения к Activity, пытается его завершить? Если объект находится внутри действия, вы можете просто вызвать 'main.this.finish();' изнутри объекта. –

+0

@Tomislav: 1-й и 2-й вопросы: нет необходимости сигнализировать. Третий вопрос: это вопрос, который нужно задать ОП. 4-й: вы можете сделать это, если Object является внутренним классом активности, это не то, что показал OP. – JRL

Смежные вопросы