2009-06-12 4 views
2

Xt에서 Qt, Java Awt/Swt/Swing 등의 많은 데스크탑 GUI 응용 프로그램을 개발하면서 Android에 익숙해지기가 정말 어려웠습니다. 액티비티 클래스에서 onCreate를 통해 인스턴스화되어 있기 때문에생성자 대신 인 텐트를 통해 데이터 전달하기

  • ()가 어떻게 그것을 사용자 정의 않습니다

    나는 다음과 같이 명시 적으로 의도 메커니즘을 통해 DetailedView를 호출하는 MAINVIEW 활동 클래스가 있다고 가정? (생성자가 없습니다. 은 데이터를 의도대로 전달합니다.) MainActivity?에 DetailView 인스턴스에 대한 참조를 가져 오는 방법이 있습니까?

  • DetailedView에서 MainActivity 인스턴스에 대한 참조를 가져 오는 방법이 있습니까?

  • 어떻게 FrontView에 대한 참조를 DetailedView 클래스에 전달할 수 있습니까? Intent.putExtras()는 특정 데이터 형식을 의도 수신기 클래스로 전달하는 것을 허용합니다.

    MainActivity { 
        ... 
        FrontEnd fe; 
        ... 
    
        public void onCreate(Bundle savedInstanceState) { 
         ... 
         Intent myIntent = new Intent(this, DetailedView.class); 
         ... 
        } 
    
        protected void onListItemClick(ListView l, View v, int position, long id) { 
         ... 
         startActivityForResult(myIntent,..); 
         ... 
        } 
    } 
    

답변

1

내가 자주 속임수와 정적 '의 getInstance를'사용은 활동 및 뷰 사이의 통신 호출합니다. 이것은 둘 다 같은 proc에 있고 데이터 액세스 오류가 발생하지 않은 한 작동합니다 ...하지만 시간 문제 일뿐입니다 ... 당신이 해커를 찾고 있다면 빠른 수정이 될 수 있습니다, 그렇지 않으면 의도를 통해 데이터를 전달해야합니다.

2

특정 앱의 활동/서비스간에 간단한 데이터를 전달하는 한 가지 방법은 Android의 SharedPreferences 기능을 사용하는 것입니다.

작업이 완료 얻을 수있는 가장 우아한 코드하지 않을 수 있습니다,하지만 난 정기적으로 1 개 라인 수 있도록 내 안드로이드 프로젝트에 정적 "유틸리티"클래스를 만들 수 및 공유 환경 설정을 통해 간단한 데이터 타입의 설정

private static final String PREFERENCE_FILE_NAME = "com.snctln.util.test.SharedPreferencesFile"; 
private static final String BOOL_VALUE_ONE = "bValueOne"; 

public static boolean getBooleanValue1(Context context) 
{ 
    SharedPreferences prefs = context.getSharedPreferences(PREFERENCE_FILE_NAME, Context.MODE_PRIVATE); 
    return prefs.getBoolean(BOOL_VALUE_ONE, true); // return true if the value does not exist 
} 

public static void setBooleanValue1(Context context, int appWidgetId, boolean actualvalue) 
{ 
    SharedPreferences.Editor prefs = context.getSharedPreferences(PREFERENCE_FILE_NAME, Context.MODE_PRIVATE).edit(); 
    prefs.putBoolean(BOOL_VALUE_ONE, actualvalue); 
    prefs.commit(); 
} 
관련 문제