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)
。私が何をしてもタイトルは決して変わらない。どんな助けでも感謝しています!
ここで、「fillUserInterface」を呼び出しますか?タグに 'anko'があるのはなぜですか? –
私はそれを順番に、retrofitを使用してHTTP呼び出しを実行するプレゼンタクラスから呼び出し、そのコールバックで '' fillUserInterface'''を呼び出します。アクティビティのビュー要素をバインドするためにankoを使用していますが、おそらく問題の原因ではありません。 –