Fix intro screens

This commit is contained in:
Phillip Thelen 2020-04-20 15:45:22 +02:00
parent 66199eefbe
commit e72cc072f1
12 changed files with 101 additions and 80 deletions

View file

@ -64,7 +64,7 @@ dependencies {
compileOnly 'com.github.pengrad:jdk9-deps:1.0' compileOnly 'com.github.pengrad:jdk9-deps:1.0'
//App Compatibility and Material Design //App Compatibility and Material Design
implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.0.0' implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.legacy:legacy-preference-v14:1.0.0' implementation 'androidx.legacy:legacy-preference-v14:1.0.0'
// Emojis // Emojis
@ -132,9 +132,9 @@ dependencies {
implementation 'androidx.core:core-ktx:1.2.0' implementation 'androidx.core:core-ktx:1.2.0'
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
implementation "androidx.lifecycle:lifecycle-common-java8:2.2.0" implementation "androidx.lifecycle:lifecycle-common-java8:2.2.0"
implementation 'androidx.navigation:navigation-fragment-ktx:2.2.1' implementation 'androidx.navigation:navigation-fragment-ktx:2.2.2'
implementation 'androidx.navigation:navigation-ui-ktx:2.2.1' implementation 'androidx.navigation:navigation-ui-ktx:2.2.2'
implementation "androidx.paging:paging-runtime-ktx:2.1.1" implementation "androidx.paging:paging-runtime-ktx:2.1.2"
implementation 'com.plattysoft.leonids:LeonidsLib:1.3.2' implementation 'com.plattysoft.leonids:LeonidsLib:1.3.2'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3'
@ -162,7 +162,7 @@ android {
multiDexEnabled true multiDexEnabled true
resConfigs "en", "bg", "de", "en-rGB", "es", "fr", "hr-rHR", "in", "it", "iw", "ja", "ko", "lt", "nl", "pl", "pt-rBR", "pt-rPT", "ru", "tr", "zh", "zh-rTW" resConfigs "en", "bg", "de", "en-rGB", "es", "fr", "hr-rHR", "in", "it", "iw", "ja", "ko", "lt", "nl", "pl", "pt-rBR", "pt-rPT", "ru", "tr", "zh", "zh-rTW"
versionCode 2407 versionCode 2408
versionName "2.6" versionName "2.6"
} }

View file

@ -1,8 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical" android:layout_width="match_parent" android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/white"> android:background="@color/white"
android:layout_marginBottom="@dimen/spacing_large">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -107,4 +111,5 @@
android:elevation="0dp" android:elevation="0dp"
android:layout_marginStart="@dimen/spacing_large" android:layout_marginStart="@dimen/spacing_large"
android:layout_marginEnd="@dimen/spacing_large" /> android:layout_marginEnd="@dimen/spacing_large" />
</LinearLayout> </LinearLayout>
</androidx.core.widget.NestedScrollView>

View file

@ -1,4 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical" android:orientation="vertical"
@ -173,4 +177,5 @@
android:textColor="@color/gray_50" android:textColor="@color/gray_50"
android:text="@string/reset_walkthrough" android:text="@string/reset_walkthrough"
android:layout_margin="@dimen/spacing_large"/> android:layout_margin="@dimen/spacing_large"/>
</LinearLayout> </LinearLayout>
</androidx.core.widget.NestedScrollView>

View file

@ -24,7 +24,6 @@ import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar.Companion.showSnackbar import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar.Companion.showSnackbar
import io.reactivex.functions.Consumer import io.reactivex.functions.Consumer
import kotlinx.android.synthetic.main.activity_prefs.*
import java.util.* import java.util.*
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import javax.inject.Inject import javax.inject.Inject
@ -54,7 +53,7 @@ class GroupInviteActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setupToolbar(toolbar) setupToolbar(findViewById(R.id.toolbar))
viewPager.currentItem = 0 viewPager.currentItem = 0
supportActionBar?.title = null supportActionBar?.title = null

View file

@ -6,7 +6,6 @@ import android.widget.TextView
import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.components.UserComponent
import com.habitrpg.android.habitica.ui.helpers.setMarkdown import com.habitrpg.android.habitica.ui.helpers.setMarkdown
import kotlinx.android.synthetic.main.activity_prefs.*
import okhttp3.* import okhttp3.*
import java.io.BufferedReader import java.io.BufferedReader
import java.io.IOException import java.io.IOException
@ -20,7 +19,7 @@ class GuidelinesActivity: BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setupToolbar(toolbar) setupToolbar(findViewById(R.id.toolbar))
val client = OkHttpClient() val client = OkHttpClient()
val request = Request.Builder().url("https://s3.amazonaws.com/habitica-assets/mobileApp/endpoint/community-guidelines.md").build() val request = Request.Builder().url("https://s3.amazonaws.com/habitica-assets/mobileApp/endpoint/community-guidelines.md").build()

View file

@ -3,46 +3,47 @@ package com.habitrpg.android.habitica.ui.activities
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.widget.Button import android.view.ViewGroup
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat import androidx.core.content.res.ResourcesCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter import androidx.fragment.app.FragmentStatePagerAdapter
import androidx.viewpager.widget.ViewPager import androidx.viewpager.widget.ViewPager
import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.components.UserComponent
import com.habitrpg.android.habitica.data.ContentRepository import com.habitrpg.android.habitica.data.ContentRepository
import com.habitrpg.android.habitica.databinding.ActivityIntroBinding
import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.helpers.RxErrorHandler
import com.habitrpg.android.habitica.ui.fragments.setup.IntroFragment import com.habitrpg.android.habitica.ui.fragments.setup.IntroFragment
import com.habitrpg.android.habitica.ui.helpers.bindView
import com.viewpagerindicator.IconPageIndicator
import com.viewpagerindicator.IconPagerAdapter import com.viewpagerindicator.IconPagerAdapter
import io.reactivex.functions.Consumer import io.reactivex.functions.Consumer
import javax.inject.Inject import javax.inject.Inject
class IntroActivity : BaseActivity(), View.OnClickListener, ViewPager.OnPageChangeListener { class IntroActivity : BaseActivity(), View.OnClickListener, ViewPager.OnPageChangeListener {
private lateinit var binding: ActivityIntroBinding
@Inject @Inject
lateinit var contentRepository: ContentRepository lateinit var contentRepository: ContentRepository
private val pager: ViewPager by bindView(R.id.viewPager)
private val indicator: IconPageIndicator by bindView(R.id.view_pager_indicator)
private val skipButton: Button by bindView(R.id.skipButton)
private val finishButton: Button by bindView(R.id.finishButton)
override fun getLayoutResId(): Int { override fun getLayoutResId(): Int {
return R.layout.activity_intro return R.layout.activity_intro
} }
override fun getContentView(): View {
binding = ActivityIntroBinding.inflate(layoutInflater)
return binding.root
}
public override fun onCreate(savedInstanceState: Bundle?) { public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setupIntro() setupIntro()
indicator.setViewPager(pager) //binding.viewPagerIndicator.setViewPager(binding.viewPager)
this.skipButton.setOnClickListener(this) binding.skipButton.setOnClickListener(this)
this.finishButton.setOnClickListener(this) binding.finishButton.setOnClickListener(this)
compositeSubscription.add(contentRepository.retrieveContent(this).subscribe(Consumer { }, RxErrorHandler.handleEmptyError())) compositeSubscription.add(contentRepository.retrieveContent(this).subscribe(Consumer { }, RxErrorHandler.handleEmptyError()))
} }
@ -52,11 +53,9 @@ class IntroActivity : BaseActivity(), View.OnClickListener, ViewPager.OnPageChan
} }
private fun setupIntro() { private fun setupIntro() {
val fragmentManager = supportFragmentManager binding.viewPager.adapter = PagerAdapter(supportFragmentManager)
pager.adapter = PagerAdapter(fragmentManager) binding.viewPager.addOnPageChangeListener(this)
pager.addOnPageChangeListener(this)
} }
override fun onClick(v: View) { override fun onClick(v: View) {
@ -76,43 +75,19 @@ class IntroActivity : BaseActivity(), View.OnClickListener, ViewPager.OnPageChan
override fun onPageSelected(position: Int) { override fun onPageSelected(position: Int) {
if (position == 2) { if (position == 2) {
this.finishButton.visibility = View.VISIBLE binding.finishButton.visibility = View.VISIBLE
} else { } else {
this.finishButton.visibility = View.GONE binding.finishButton.visibility = View.GONE
} }
} }
override fun onPageScrollStateChanged(state: Int) { /* no-on */ } override fun onPageScrollStateChanged(state: Int) { /* no-on */ }
private inner class PagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT), IconPagerAdapter { private inner class PagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT), IconPagerAdapter {
override fun getItem(position: Int): Fragment { override fun getItem(position: Int): Fragment {
val fragment = IntroFragment() val fragment = IntroFragment()
configureFragment(fragment, position)
when (position) {
0 -> {
fragment.setImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_1, null))
fragment.setSubtitle(getString(R.string.intro_1_subtitle))
fragment.setTitleImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_1_title, null))
fragment.setDescription(getString(R.string.intro_1_description, getString(R.string.habitica_user_count)))
fragment.setBackgroundColor(ContextCompat.getColor(this@IntroActivity, R.color.brand_300))
}
1 -> {
fragment.setImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_2, null))
fragment.setSubtitle(getString(R.string.intro_2_subtitle))
fragment.setTitle(getString(R.string.intro_2_title))
fragment.setDescription(getString(R.string.intro_2_description))
fragment.setBackgroundColor(ContextCompat.getColor(this@IntroActivity, R.color.blue_10))
}
2 -> {
fragment.setImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_3, null))
fragment.setSubtitle(getString(R.string.intro_3_subtitle))
fragment.setTitle(getString(R.string.intro_3_title))
fragment.setDescription(getString(R.string.intro_3_description))
fragment.setBackgroundColor(ContextCompat.getColor(this@IntroActivity, R.color.red_100))
}
}
return fragment return fragment
} }
@ -123,5 +98,39 @@ class IntroActivity : BaseActivity(), View.OnClickListener, ViewPager.OnPageChan
override fun getCount(): Int { override fun getCount(): Int {
return 3 return 3
} }
override fun instantiateItem(container: ViewGroup, position: Int): Any {
val item = super.instantiateItem(container, position)
if (item is IntroFragment) {
configureFragment(item, position)
}
return item
}
}
private fun configureFragment(fragment: IntroFragment, position: Int) {
when (position) {
0 -> {
fragment.setImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_1, null))
fragment.setSubtitle(getString(R.string.intro_1_subtitle))
fragment.setTitleImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_1_title, null))
fragment.setDescription(getString(R.string.intro_1_description, getString(R.string.habitica_user_count)))
fragment.setBackgroundColor(ContextCompat.getColor(this@IntroActivity, R.color.brand_300))
}
1 -> {
fragment.setImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_2, null))
fragment.setSubtitle(getString(R.string.intro_2_subtitle))
fragment.setTitle(getString(R.string.intro_2_title))
fragment.setDescription(getString(R.string.intro_2_description))
fragment.setBackgroundColor(ContextCompat.getColor(this@IntroActivity, R.color.blue_10))
}
2 -> {
fragment.setImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_3, null))
fragment.setSubtitle(getString(R.string.intro_3_subtitle))
fragment.setTitle(getString(R.string.intro_3_title))
fragment.setDescription(getString(R.string.intro_3_description))
fragment.setBackgroundColor(ContextCompat.getColor(this@IntroActivity, R.color.red_100))
}
}
} }
} }

View file

@ -13,6 +13,8 @@ import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.components.UserComponent
import com.habitrpg.android.habitica.data.InventoryRepository import com.habitrpg.android.habitica.data.InventoryRepository
import com.habitrpg.android.habitica.data.SocialRepository import com.habitrpg.android.habitica.data.SocialRepository
import com.habitrpg.android.habitica.databinding.ActivityIntroBinding
import com.habitrpg.android.habitica.databinding.ActivityNotificationsBinding
import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.helpers.RxErrorHandler
import com.habitrpg.android.habitica.models.Notification import com.habitrpg.android.habitica.models.Notification
import com.habitrpg.android.habitica.models.inventory.QuestContent import com.habitrpg.android.habitica.models.inventory.QuestContent
@ -20,11 +22,11 @@ import com.habitrpg.android.habitica.models.notifications.*
import com.habitrpg.android.habitica.ui.activities.MainActivity.Companion.NOTIFICATION_CLICK import com.habitrpg.android.habitica.ui.activities.MainActivity.Companion.NOTIFICATION_CLICK
import com.habitrpg.android.habitica.ui.viewmodels.NotificationsViewModel import com.habitrpg.android.habitica.ui.viewmodels.NotificationsViewModel
import io.reactivex.functions.Consumer import io.reactivex.functions.Consumer
import kotlinx.android.synthetic.main.activity_notifications.*
import javax.inject.Inject import javax.inject.Inject
class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener { class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener {
private lateinit var binding: ActivityNotificationsBinding
@Inject @Inject
lateinit var inventoryRepository: InventoryRepository lateinit var inventoryRepository: InventoryRepository
@Inject @Inject
@ -36,12 +38,17 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
override fun getLayoutResId(): Int = R.layout.activity_notifications override fun getLayoutResId(): Int = R.layout.activity_notifications
override fun getContentView(): View {
binding = ActivityNotificationsBinding.inflate(layoutInflater)
return binding.root
}
private var notifications: List<Notification> = emptyList() private var notifications: List<Notification> = emptyList()
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setupToolbar(toolbar) setupToolbar(binding.toolbar)
inflater = getSystemService(Context.LAYOUT_INFLATER_SERVICE) as? LayoutInflater inflater = getSystemService(Context.LAYOUT_INFLATER_SERVICE) as? LayoutInflater
@ -53,7 +60,7 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
viewModel.markNotificationsAsSeen(it) viewModel.markNotificationsAsSeen(it)
}, RxErrorHandler.handleEmptyError())) }, RxErrorHandler.handleEmptyError()))
notifications_refresh_layout?.setOnRefreshListener(this) binding.notificationsRefreshLayout.setOnRefreshListener(this)
} }
override fun injectActivity(component: UserComponent?) { override fun injectActivity(component: UserComponent?) {
@ -69,21 +76,21 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
} }
override fun onRefresh() { override fun onRefresh() {
notifications_refresh_layout.isRefreshing = true binding.notificationsRefreshLayout.isRefreshing = true
compositeSubscription.add(viewModel.refreshNotifications().subscribe(Consumer { compositeSubscription.add(viewModel.refreshNotifications().subscribe(Consumer {
notifications_refresh_layout.isRefreshing = false binding.notificationsRefreshLayout.isRefreshing = false
}, RxErrorHandler.handleEmptyError())) }, RxErrorHandler.handleEmptyError()))
} }
private fun setNotifications(notifications: List<Notification>) { private fun setNotifications(notifications: List<Notification>) {
this.notifications = notifications this.notifications = notifications
if (notification_items == null) { if (binding.notificationItems == null) {
return return
} }
notification_items.removeAllViewsInLayout() binding.notificationItems.removeAllViewsInLayout()
if (notifications.isEmpty()) { if (notifications.isEmpty()) {
displayNoNotificationsView() displayNoNotificationsView()
@ -93,15 +100,15 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
} }
private fun displayNoNotificationsView() { private fun displayNoNotificationsView() {
notification_items.showDividers = LinearLayout.SHOW_DIVIDER_NONE binding.notificationItems.showDividers = LinearLayout.SHOW_DIVIDER_NONE
notification_items.addView(inflater?.inflate(R.layout.no_notifications, notification_items, false)) binding.notificationItems.addView(inflater?.inflate(R.layout.no_notifications, binding.notificationItems, false))
} }
private fun displayNotificationsListView(notifications: List<Notification>) { private fun displayNotificationsListView(notifications: List<Notification>) {
notification_items.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE or LinearLayout.SHOW_DIVIDER_END binding.notificationItems.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE or LinearLayout.SHOW_DIVIDER_END
notification_items.addView( binding.notificationItems.addView(
createNotificationsHeaderView(notifications.count()) createNotificationsHeaderView(notifications.count())
) )
@ -121,13 +128,13 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
} }
if (item != null) { if (item != null) {
notification_items.addView(item) binding.notificationItems.addView(item)
} }
} }
} }
private fun createNotificationsHeaderView(notificationCount: Int): View? { private fun createNotificationsHeaderView(notificationCount: Int): View? {
val header = inflater?.inflate(R.layout.notifications_header, notification_items, false) val header = inflater?.inflate(R.layout.notifications_header, binding.notificationItems, false)
val badge = header?.findViewById(R.id.notifications_title_badge) as? TextView val badge = header?.findViewById(R.id.notifications_title_badge) as? TextView
badge?.text = notificationCount.toString() badge?.text = notificationCount.toString()
@ -237,7 +244,7 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
imageResourceId: Int? = null, imageResourceId: Int? = null,
textColor: Int? = null textColor: Int? = null
): View? { ): View? {
val item = inflater?.inflate(R.layout.notification_item, notification_items, false) val item = inflater?.inflate(R.layout.notification_item, binding.notificationItems, false)
val container = item?.findViewById(R.id.notification_item) as? View val container = item?.findViewById(R.id.notification_item) as? View
container?.setOnClickListener { container?.setOnClickListener {
@ -337,7 +344,7 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
notification: Notification, notification: Notification,
messageText: CharSequence, messageText: CharSequence,
openable: Boolean = false): View? { openable: Boolean = false): View? {
val item = inflater?.inflate(R.layout.notification_item_actionable, notification_items, false) val item = inflater?.inflate(R.layout.notification_item_actionable, binding.notificationItems, false)
if (openable) { if (openable) {
val container = item?.findViewById(R.id.notification_item) as? View val container = item?.findViewById(R.id.notification_item) as? View

View file

@ -6,7 +6,6 @@ import androidx.preference.PreferenceScreen
import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.components.UserComponent
import com.habitrpg.android.habitica.ui.fragments.preferences.* import com.habitrpg.android.habitica.ui.fragments.preferences.*
import kotlinx.android.synthetic.main.activity_prefs.*
class PrefsActivity : BaseActivity(), PreferenceFragmentCompat.OnPreferenceStartScreenCallback { class PrefsActivity : BaseActivity(), PreferenceFragmentCompat.OnPreferenceStartScreenCallback {
@ -15,7 +14,7 @@ class PrefsActivity : BaseActivity(), PreferenceFragmentCompat.OnPreferenceStart
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setupToolbar(toolbar) setupToolbar(findViewById(R.id.toolbar))
supportFragmentManager.beginTransaction() supportFragmentManager.beginTransaction()
.add(R.id.fragment_container, PreferencesFragment()) .add(R.id.fragment_container, PreferencesFragment())

View file

@ -13,7 +13,6 @@ import com.habitrpg.android.habitica.helpers.RxErrorHandler
import com.habitrpg.android.habitica.ui.adapter.social.PartyMemberRecyclerViewAdapter import com.habitrpg.android.habitica.ui.adapter.social.PartyMemberRecyclerViewAdapter
import com.habitrpg.android.habitica.ui.helpers.bindView import com.habitrpg.android.habitica.ui.helpers.bindView
import io.reactivex.functions.Consumer import io.reactivex.functions.Consumer
import kotlinx.android.synthetic.main.activity_prefs.*
import javax.inject.Inject import javax.inject.Inject
class SkillMemberActivity : BaseActivity() { class SkillMemberActivity : BaseActivity() {
@ -36,7 +35,7 @@ class SkillMemberActivity : BaseActivity() {
public override fun onCreate(savedInstanceState: Bundle?) { public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setupToolbar(toolbar) setupToolbar(findViewById(R.id.toolbar))
loadMemberList() loadMemberList()
} }

View file

@ -18,7 +18,6 @@ import com.habitrpg.android.habitica.modules.AppModule
import com.habitrpg.android.habitica.ui.fragments.skills.SkillTasksRecyclerViewFragment import com.habitrpg.android.habitica.ui.fragments.skills.SkillTasksRecyclerViewFragment
import com.habitrpg.android.habitica.ui.helpers.bindView import com.habitrpg.android.habitica.ui.helpers.bindView
import io.reactivex.functions.Consumer import io.reactivex.functions.Consumer
import kotlinx.android.synthetic.main.activity_prefs.*
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Named import javax.inject.Named
@ -40,7 +39,7 @@ class SkillTasksActivity : BaseActivity() {
public override fun onCreate(savedInstanceState: Bundle?) { public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setupToolbar(toolbar) setupToolbar(findViewById(R.id.toolbar))
loadTaskLists() loadTaskLists()
} }

View file

@ -100,7 +100,7 @@ class BugFixFragment: BaseMainFragment() {
activity?.let { activity?.let {
val emailIntent = Intent(Intent.ACTION_SENDTO) val emailIntent = Intent(Intent.ACTION_SENDTO)
val mailto = "mailto:" + appConfigManager.supportEmail() + val mailto = "mailto:" + appConfigManager.supportEmail() +
"&subject=" + Uri.encode(subject) + "?subject=" + Uri.encode(subject) +
"&body=" + Uri.encode(bodyOfEmail) "&body=" + Uri.encode(bodyOfEmail)
emailIntent.data = Uri.parse(mailto); emailIntent.data = Uri.parse(mailto);

View file

@ -118,7 +118,7 @@ class SupportMainFragment : BaseMainFragment() {
activity?.let { activity?.let {
val emailIntent = Intent(Intent.ACTION_SENDTO) val emailIntent = Intent(Intent.ACTION_SENDTO)
val mailto = "mailto:" + appConfigManager.supportEmail() + val mailto = "mailto:" + appConfigManager.supportEmail() +
"&subject=" + Uri.encode(subject) + "?subject=" + Uri.encode(subject) +
"&body=" + Uri.encode(bodyOfEmail) "&body=" + Uri.encode(bodyOfEmail)
emailIntent.data = Uri.parse(mailto); emailIntent.data = Uri.parse(mailto);