2011-10-04 2 views
0

다른 활동에서 메소드를 재사용 할 수 있습니까? 예를 들어 retrieveAllStudents()StudentActivity입니다. 정적 또는 무언가로 만들고 ClassActivity의 메서드를 호출 할 수 있습니까? 또는 두 방법 모두에서이 방법을 복제해야합니까?Android에서 여러 활동의 메소드 재사용

어느 쪽이 맞습니까?

예 1

StudentActivity

public static ArrayList<Student> retrieveAllStudents(){ 
    ... 
    return studentList; 
} 

ClassActivity

import StudentActivity 

ArrayList<Student> studentList= StudentActivity.retrieveAllStudents(); 

예 2

StudentActivity

public static ArrayList<Student> retrieveAllStudents(){ 
    ... 
    return studentList; 
} 
,174 이 public static 경우

ClassActivity

public static ArrayList<Student> retrieveAllStudents(){ 
    ... 
    return studentList; 
} 

ArrayList<Student> studentList= retrieveAllStudents(); 

답변

1

는 다른 활동 (그리고 앱에서 다른 클래스)에서 확실히 accesible입니다. 그러나 액티비티가 서로 함수를 호출하면 지나치게 복잡한 코드가 생길 수 있습니다. getStudent() 함수 및 다른 공유 기능을 별도의 Student 클래스로 이동하는 것이 좋습니다.

예 다른 클래스의 메서드를 다시 사용할 수 있습니다. 이는 매우 일반적이며 모범 사례로 간주됩니다. 두 가지 예를 생각해 볼 때, 첫 번째 예가 더 정확합니다. 그것은 일반적인 방법 인 경우

+0

이전에 사망하면 그 기능에 액세스하는 데 문제가 있습니까? –

+0

@AndroidPower No. 클래스에서 정적 메서드를 호출 할 때 클래스를 인스턴스화 할 필요는 없습니다. 인스턴스 메소드 인 경우 클래스를 인스턴스화해야하지만 인스턴스화 된 클래스는 활동 라이프 사이클과 매우 다릅니다. – spatulamania

+0

확인. 만약 내가 올바르게 이해한다면, 그 메소드가'클래스 '에 있다면, 아무런 문제가 없다. 그러나, 정적 메소드가'Activity'에 있다면? – newbie

0

, 다음, Application 클래스에 보관 내 의견으로 응용 프로그램 클래스

public static Context getAppContext() { return context; };

0

의 정적 상황을 더 좋은 방법은 클래스 (단지 클래스가 아닌 활동을) 할 것 그런 다음 필요한 공통 메소드 클래스의 인스턴스를 Activity에 작성하고 필요할 때 메소드를 사용하십시오. (example)

다른 해결책은 여기에 해당하지 않는 활동 인 경우 ClassActivity에서 StudentActivity를 확장하는 것입니다.

어쨌든 어쩌면 당신은 다시 당신의 응용 프로그램에서 어떤 수업이되어야한다고 생각해야 할지도 모릅니다. 비트 약 activities을 읽는 것이 유용 할 수 있습니다. 그런 다음 위에서 설명한 두 가지 방법 중 하나를 사용하여 사용자의 필요에 따라 제안합니다. 그렇게하면 안드로이드 시스템에서 스택에서 활동을 제거하여 발생하는 문제를 방지 할 수 있습니다 (lifecycle 활동에 대해서도 읽을 수 있습니다).

건배

관련 문제