2013-04-05 2 views
3

Привет и спасибо за вашу помощь,Вызов метода в моей PreferenceActivity Вид деятельности другое Деятельность

У меня есть следующая ситуация.

В моем приложении я использую PreferenceActivity для отображения и разрешения изменений настроек, назовем его PreferenceActivity A.

Если пользователь выбирает один конкретный префикс, запускается новое действие, назовем его Деятельность B (A не разрушена).

Что мне нужно сделать, это вызвать метод PreferenceActivity формы внутри активности B.

Пожалуйста, обратите внимание: что метод в PreferenceActivity А не может быть статичным.

Любая помощь очень ценится.

EDIT EDIT EDIT EDIT EDIT EDIT

Это как Activty B запускается: Когда пользователь нажимает на пункт корреспонденте в PreferenceActivity экран, намерение срабатывает.

<PreferenceScreen 
     android:key="addstocks" 
     android:summary="Click here to add stocks" 
     android:title="Add stocks" > 
     <intent 
      android:targetClass="com.stocktickerwidget.QuotesActivity" 
      android:targetPackage="com.stocktickerwidget" /> 
+1

Нужно ли передавать аргументы методу, и нужно ли методу вернуть что-то вызывающему? Какова цель вызова этого метода (т. Е. Только так, что пользователь видит что-то другое, когда они возвращаются к Activity A)? – Karakuri

+0

@ Каракури ничего не нужно передавать. Действие A изменит внешний вид из-за вызова этого метода. –

+1

В этом случае я рекомендую использовать 'startActivityForResult()', передавая результат и изменяя внешний вид в 'onActivityResult()'. Вы могли бы использовать Handler и Messenger, но я думаю, что первое проще и понятнее. – Karakuri

ответ

2

Вместо того чтобы начать деятельность подобного, вручную установить OnPreferenceClickListener от предпочтений и использования startActivityForResult().

private static final int RESUEST_CODE = 1; 
protected void onCreate() { 
    /* ... */ 
    Preference pref = getPreferenceManager().findPreference("addstocks"); 
    pref.setOnPreferenceClickListener(new OnPreferenceClickListener() { 
     public boolean onPreferenceClick(Preference preference() { 
      if (preference.getKey().equals("addstocks") { 
       startActivityB(); 
       return true; 
      } 
      return false; 
     } 
    }); 
} 

private void startActivityB() { 
    Intent intent = new Intent(this, ActivityB.class); 
    startActivityForResult(intent, REQUEST_CODE); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { 
     // do something here 
    } 
} 
+0

спасибо! Это решило проблему !!! –