2009-06-12 6 views
2

Разработал множество графических приложений для настольных компьютеров (от Xt до Qt, Java Awt/Swt/Swing и т. Д.) Мне действительно сложно привыкнуть к Android.Передача данных с помощью намерений вместо конструкторов

Пусть у меня есть MainView класс Activity, который явно вызывает DetailedView с помощью намерения механизма, как показано ниже:

  • Поскольку класс активности конкретизируется через OnCreate(), как я настроить его? (Нет конструктора, только передавать данные через намерение!)

  • Есть ли способ получить ссылку на экземпляр DetailView в MainActivity?

  • Есть ли способ получить ссылку для экземпляра MainActivity в Детальный просмотр?

  • Как передать ссылку на FrontEnd в класс 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» вызовы для связи между деятельностью и взглядами. Это работает до тех пор, пока они оба находятся в одной и той же процедуре, и у меня еще нет сбоя доступа к данным ... но я уверен, что это всего лишь вопрос времени ... ЕСЛИ вы ищете хакерскую Быстрое исправление это может быть так, иначе вы должны передавать данные через намерения.

2

Одним из способов передачи простых данных между действиями/услугами конкретного приложения является использование функции SharedPreferences для Android.

Это может быть не самый элегантный код, чтобы сделать работу, но я обычно создаю статический «полезности» класс в моих Android проектов, чтобы на 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(); 
} 
Смежные вопросы