2013-07-05 2 views
1

Я посылаю намерение, когда установлен какой-либо флаг в моей программе, и затем получаю это намерение в BroadcastReceiver. Я не знаю, как обновить фрагмент вкладки здесь. Любые предложения или примеры?Как обновить вкладку фрагмента из BroadcastReceiver?

Я получаю этот журнал, когда флаг установлен, но я не KNW как оттуда:

public class MyReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context, "hello :)", Toast.LENGTH_LONG).show(); 
    } 
} 

Спасибо за помощь!

Фрагмент:

public class FragmentInfo extends Fragment { 

private TextView textView1; 
    private TextView textView3; 
    private TextView textView5; 
    private TextView textView7; 
    private TextView textView8; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View myFragmentView = inflater.inflate(R.layout.fragment_info, container, false); 

    connectButton = (Button) myFragmentView.findViewById(R.id.button1); 
    changeSettingsButton = (Button) myFragmentView.findViewById(R.id.button2); 
    erraseFlightsButton = (Button) myFragmentView.findViewById(R.id.button3); 

    //TextView for status of connected device.. 
    textView1 = (TextView)myFragmentView.findViewById(R.id.TextView1); 
    //TextView for Device name 
    textView3 = (TextView)myFragmentView.findViewById(R.id.TextView3); 
    //TextView for Serial number 
    textView5 = (TextView)myFragmentView.findViewById(R.id.TextView5); 
    //TextView for Software version 
    textView7 = (TextView)myFragmentView.findViewById(R.id.TextView7); 
    //TextView for Connected Device version 
    textView8 = (TextView)myFragmentView.findViewById(R.id.TextView8); 


    return myFragmentView; 
} 

} 
+0

добавьте код, который у вас есть для фрагмента вкладки –

+0

Я добавил базовый код фрагмента. – anze87

ответ

3
  1. Сделать класс Receiver вложенный класс одного, который управляет вкладок. Таким образом, вы должны иметь доступ к методам, которые обновляют данные с помощью методов фрагмента. Этот приемник должен быть зарегистрирован и незарегистрирован в onStart() и onPause() соответственно (оберните их в блок try-catch, так как некоторые версии Android могут произойти сбой при регистрации или отмене регистрации). Этот приемник должен быть вложенным классом класса активности, который контролирует ваши фрагменты. Не помещайте его в класс фрагмента.

  2. Сделайте его классом высшего уровня и передайте слушателю метод, например setUpdateListener(YourListener). Внедрите слушателя в действие, которое контролирует вкладки.

  3. Существует также класс Messenger, который вы могли бы передать для взаимодействия внутри процессов.

EDIT: В любом случае приемник, который обновляет фрагменты, не регистрирует его в манифесте, а через код. Нет необходимости иметь приемник, который обновляет пользовательский интерфейс, срабатывает, когда не отображается пользовательский интерфейс.

+0

Это для меня много. Я создал этот класс в Fragment, но теперь я получаю ошибку: java.lang.RuntimeException: не удалось создать экземпляр приемника com.example.device.MyReceiver: java.lang.ClassNotFoundException: класс, вероятно, не видел там ... – anze87

+0

Я обновил ответ. Кроме того, любой вложенный класс в xml-файлах должен быть доступен с помощью '$' sign - 'com.example.device $ MyReceiver' данного' device' является классом верхнего уровня. –

Смежные вопросы