2017-01-06 6 views
0

ネットワークコールバックから呼び出されたメソッドからsupportActionBarのタイトルを変更しようとしています。私がメインスレッドの中から呼び出すとしても、タイトルは変わりません!それ以外の方法で試してみると。バグ - supportActionBarのタイトルを変更できません

マイレイアウト:

<android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/app_bar_height" 
     android:fitsSystemWindows="true" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/toolbar_layout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <ImageView 
       android:id="@+id/userProfile" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:contentDescription="@string/str_act_main_user_list_item_user_profile_picture" /> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:layout_collapseMode="pin" 
       app:popupTheme="@style/AppTheme.PopupOverlay" /> 

     </android.support.design.widget.CollapsingToolbarLayout> 
    </android.support.design.widget.AppBarLayout> 

MainActivity:

class ActivityMain : BaseActivity(), ContractMainView { 

    @Inject 
    lateinit var mPresenter: ContractMainPresenter 

    private var mUser: User? = null 

    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     setContentView(R.layout.activity_main) 
     App.component!!.inject(this) 
     setSupportActionBar(toolbar) 
     initPageView() 
     setUpProfile() 
     mPresenter.init() 

    } 

    override fun getContext(): AppCompatActivity { 
     return this 
    } 

    override fun getView(): BaseView? { 
     return this 
    } 

    override fun getPresenter(): BasePresenter? { 
     return mPresenter 
    } 

    private fun initPageView() { 
     container.adapter = SectionsPagerAdapter(supportFragmentManager) 
     container.addOnPageChangeListener(object : ViewPager.SimpleOnPageChangeListener() { 
      override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { 
       if (position == 0 && positionOffset > 0.95) { 
        app_bar.setExpanded(false) 
       } 
      } 

      override fun onPageSelected(position: Int) { 
       if (position == 0) { 
        app_bar.setExpanded(true) 
       } 
      } 
     }) 
    } 

    override fun fillUserInterface(user: User) { 
     mUser = user 
     runOnUiThread { 
      println("changing title to: ${user.name}") 
      supportActionBar!!.title = "This is a Test" 
     } 
    } 

    private fun setUpProfile() { 
     Picasso.with(this) 
       .load("http://images.mentalfloss.com/sites/default/files/borat_primary.jpg") 
       .fit() 
       .centerCrop() 
       .into(findViewById(R.id.userProfile) as ImageView) 
    } 
} 

と呼ばれる方法がある:fillUserInterface(user: User)。私が何をしてもタイトルは決して変わらない。どんな助けでも感謝しています!

+0

ここで、「fillUserInterface」を呼び出しますか?タグに 'anko'があるのはなぜですか? –

+0

私はそれを順番に、retrofitを使用してHTTP呼び出しを実行するプレゼンタクラスから呼び出し、そのコールバックで '' fillUserInterface'''を呼び出します。アクティビティのビュー要素をバインドするためにankoを使用していますが、おそらく問題の原因ではありません。 –

答えて

関連する問題