열거 형은 기본 유형이 아니기 때문에 Android에서 aidl 인터페이스를 통해 열거 형을 전달하는 가장 효과적인 방법은 무엇입니까? 열거 형을 서수로 변환하는 방법이 있습니까? String
이외aidl 인터페이스를 통해 열거 전달
답변
은 공식 문서에서 살펴 보자 : 또한 http://developer.android.com/guide/developing/tools/aidl.html#aidlsyntax비 기본 형식은 방향성 표시를 필요로한다. 방향 표시기에는
in
,out
및inout
이 포함됩니다.
, 당신은 문자열 또는 열거의 서수 표현을 통과 고려하고 필요할 때 다시 번역 할 수 있습니다. 이것은 효과적인 자바 2 판에서 가져온 것입니다 :
위의 경우// Implementing a fromString method on an enum type
private static final Map<String, Operation> stringToEnum = new HashMap<String, Operation>();
static { // Initialize map from constant name to enum constant
for (Operation op : values())
stringToEnum.put(op.toString(), op);
} // Returns Operation for string, or null if string is invalid
public static Operation fromString(String symbol) {
return stringToEnum.get(symbol);
}
이 Operation
는 enum
입니다.
String enumString = myEnum.name()
(값으로 열거하고 myEnum 등 MyEnum와) String 표현을 얻을 수
public enum Badges{
GOLD, SILVER, BRONZE;
}
// somewhere else:
int ordinal = Badges.SILVER.ordinal();// this should be 1
단순히 사용
는 열거의 서수이 예제를 고려 얻으려면 그 다음에
MyEnum myEnum = MyEnum.valueOf(enumString)
을 사용하여 문자열 표현에서 열거 형을 재구성합니다.
서수를 사용하는 것이 더 빠를 수도 있지만 나중에 열거 형을 추가 할 수있는 경우 오래된 코드가 손상 될 가능성이 큽니다.
// 편집 : 반환 형식으로 문자열을 가지고 싶어하지 않기 때문에, 지금 여기에 언급처럼 Parcellable을 구현 : Passing enum or object through an intent (the best solution)
수입 android.os.Parcel; import android.os.Parcelable;
enum InitResponse implements Parcelable {
// Everything is fine.
SUCCESS,
// Something else
FOO;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(final Parcel dest, final int flags) {
dest.writeString(name());
}
public static final Creator<InitResponse> CREATOR = new Creator<InitResponse>() {
@Override
public InitResponse createFromParcel(final Parcel source) {
return InitResponse.valueOf(source.readString());
}
@Override
public InitResponse[] newArray(final int size) {
return new InitResponse[size];
}
};
}
이제이 접근법을 http://stackoverflow.com/questions/2836256/passing-enum-or-object-through-an-intent-the-best-solution의 Parcellable-Implementation과 결합하여 편집 된 코드가 생성되었습니다. 위. – domenukk
- 1. 전달 열거 형 인수
- 2. C에서 열거 형 전달
- 3. Android - AIDL 서비스를 통해 TextView 문자열 업데이트
- 4. AIDL 인터페이스 구현
- 5. 쿼리 문자열을 통해 열거 형 값을 CaliburnMicro 뷰 모델로 전달
- 6. Java to AIDL 유틸리티
- 7. ASP.NET - SiteMapNode.ChildNodes를 통해 열거
- 8. 다중 인터페이스를 통해 데이터를 송수신합니다.
- 9. 제네릭 매개 변수에 인터페이스를 구현하는 열거 형을 요구하려면 어떻게해야합니까?
- 10. AIDL 자습서가 필요합니다.
- 11. AIDL 소포 사용
- 12. AIDL - 중요한 점은 무엇입니까?
- 13. JSON을 URI를 통해 전달
- 14. URL을 통해 값 전달
- 15. JQuery로드를 통해 var를 전달
- 16. aidl을 통해 뷰 인스턴스 전달 방법
- 17. 열거 형을 값 또는 참조로 전달 하시겠습니까?
- 18. JavaScript를 통해 URL을 통해 문자열 전달
- 19. 보기를 통해 URL을 통해 항목 목록 전달
- 20. aidl 파일에서 hashmap을 반환하는 방법
- 21. 어떻게 aidl 서비스가 시작 되었습니까?
- 22. AIDL ServiceConnection.OnServiceDisconnected()가 호출되지 않았습니다.
- 23. IScriptControl을 통해 JavaScript에 복잡한 객체 전달
- 24. Android : Eclipse에서 AIDL 파일을 인식하지 못합니다.
- 25. 레일스에서 JSON 인터페이스를 통해 파일을 업로드하는 방법
- 26. 인터페이스를 통해 개체를 호출 할 수 있습니다.
- 27. IWebBrowser2 인터페이스를 통해 쿠키가 활성화되었는지 여부 감지
- 28. Javascript에서 AJAX를 통해 앰퍼샌드 전달
- 29. 메뉴를 통해 예외 유형 전달
- 30. Constructor를 통해 SurfaceView에 인수 전달
Charlie Collins의 의견을 확인하십시오. 그게 사실입니다 : 가능한 한 enum을 피하십시오. – Cristian
@ 크리스티안은 소금 한 알과 함께 섭취해야합니다. enums 좋은 디자인입니다. 안드로이드가 언어에서 열거 형을 제거하지 않는 이유가 있습니다. –
그건 사실인데. 그러나 나는 그것이 쉽지 않기 때문에 그들이 그것을 옮기지 않았다고 생각한다. 그들은 바이트 코드를 덱싱하기 전에'javac'을 사용합니다. 어쨌든 ... 나는 enum을 좋아하고 일을 분명하고 우아하게 만들 때 그것을 사용합니다. – Cristian