title: LiveData Observer not Called
body: <p>I have an activity, <code>TabBarActivity</code> that hosts a fragment, <code>EquipmentRecyclerViewFragment</code>.  The fragment receives the LiveData callback but the Activity does not (as proofed with breakpoints in debugging mode).  What's weird is the Activity callback does trigger if I call the ViewModel's <code>initData</code> method. Below are the pertinent sections of the mentioned components: </p>
  
  <p><strong>TabBarActivity</strong></p>
  
  <pre><code>override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      initVM()
      setContentView(R.layout.activity_nav)
      val equipmentRecyclerViewFragment = EquipmentRecyclerViewFragment()
      supportFragmentManager
              .beginTransaction()
              .replace(R.id.frameLayout, equipmentRecyclerViewFragment, equipmentRecyclerViewFragment.TAG)
              .commit()
      navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
  
  }
  
  var eVM : EquipmentViewModel? = null
  private fun initVM() {
      eVM = ViewModelProviders.of(this).get(EquipmentViewModel::class.java)
      eVM?.let { lifecycle.addObserver(it) } //Add ViewModel as an observer of this fragment's lifecycle
      eVM?.equipment?.observe(this, loadingObserver)//        eVM?.initData() //TODO: Not calling this causes Activity to never receive the observed ∆
  }
  val loadingObserver = Observer&lt;List&lt;Gun&gt;&gt; { equipment -&gt;
      ...}
  </code></pre>
  
  <p><strong>EquipmentRecyclerViewFragment</strong></p>
  
  <pre><code>override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      columnCount = 2
      initVM()
  }
  
  //MARK: ViewModel Methods
  var eVM : EquipmentViewModel? = null
  private fun initVM() {
      eVM = ViewModelProviders.of(this).get(EquipmentViewModel::class.java)
      eVM?.let { lifecycle.addObserver(it) } //Add ViewModel as an observer of this fragment's lifecycle
      eVM?.equipment?.observe(this, equipmentObserver)
      eVM?.initData()
  }
  override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
      val view = inflater.inflate(R.layout.fragment_equipment_list, container, false)
      if (view is RecyclerView) { // Set the adapter
          val context = view.getContext()
          view.layoutManager = GridLayoutManager(context, columnCount)
          view.adapter = adapter
      }
      return view
  }
  </code></pre>
  
  <p><strong>EquipmentViewModel</strong></p>
  
  <pre><code>class EquipmentViewModel(application: Application) : AndroidViewModel(application), LifecycleObserver {
  var equipment = MutableLiveData&lt;List&lt;Gun&gt;&gt;()
  var isLoading = MutableLiveData&lt;Boolean&gt;()
  
  fun initData() {
      isLoading.setValue(true)
      thread { Thread.sleep(5000) //Simulates async network call
          var gunList = ArrayList&lt;Gun&gt;()
          for (i in 0..100){
              gunList.add(Gun("Gun "+i.toString()))
          }
          equipment.postValue(gunList)
          isLoading.postValue(false)
      }
  }
  </code></pre>
  
  <p>The ultimate aim is to have the activity just observe the <code>isLoading</code> MutableLiveData boolean, but since that wasn't working I changed the activity to observe just the equipment LiveData to minimize the number of variables at play.</p>