2011-12-22 2 views
0

나는 나의 활동을 대표하고 그렇게 할 수있는 방법이 있습니까개체에서 작업을 마칠 수 있습니까?

public class main extends Activity{ 
    //Does stuff 
    } 

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

과 같이 객체를 가지고 클래스가?

+1

귀하의 디자인은 조금 이상하다. 물체는 어떻게 신호를 전달합니까? 정적 필드로? 액티비티와 관계가없는 객체가 객체를 완성하려고하는 이유는 무엇입니까? –

답변

1

Object에 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 문을 사용하여 객체가 부울 플래그를 통해 신호를 보낼 때만 finish를 호출하는 것입니다. 나는 더 나은 대안이 있기를 바랬다. – eBehbahani

+0

디자인이 약간 이상합니다. 물체는 어떻게 신호를 전달합니까? 정적 필드로? 액티비티와 관계가없는 객체가 객체를 완성하려고하는 이유는 무엇입니까? 객체가 액티비티 내부에 존재한다면 객체 내부에서'main.this.finish(); '를 호출하면됩니다. –

+0

@ 토미 슬라브 : 1 차 및 2 차 질문 : 신호 할 필요 없음. 세 번째 질문 : 그것은 OP 질문을하는 것입니다. 네 번째 : Object가 액티비티의 내부 클래스 인 경우 OP가 보여주는 것과 다르다. – JRL