Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Oct 20 2016 21:49
    @rus-speaking banned @ImangazalievM
  • Oct 12 2016 11:36
    @rus-speaking banned @postflow
  • May 21 2016 08:32
    User @rus-speaking unbanned @molchanoviv
  • May 21 2016 08:32
    User @rus-speaking unbanned @evigor
  • May 19 2016 00:18
    @rus-speaking banned @evigor
  • May 19 2016 00:17
    @rus-speaking banned @molchanoviv
  • Jan 31 2016 12:13
    @rus-speaking banned @Nikkola
  • Dec 01 2015 16:39
    @rus-speaking banned @StNekroman
  • Nov 15 2015 20:35
    User @rus-speaking unbanned @skilz2012 from this room
  • Nov 11 2015 12:31
    @rus-speaking banned @skilz2012
mnewlive
@mnewlive

Такая загвоздочка
передаю в companion object
ключ, после чего присваиваю ему тип, выглядит примерно так

 companion object {

        private val KEY_TABBAR = "KEY_TABBAR"

        fun newInstance(showTabbar: Boolean = true): TransactionsFragment {
            val fragment = TransactionsFragment()
            val args = Bundle()
            showTabbar.let { args.putBoolean(KEY_TABBAR, it) }
            fragment.arguments = args
            return fragment
        }
    }

Далее в этом же классе обхявляю переменную

private var showTabbar: Boolean = false

и уже в onCreate() получаю аргументы

 showTabbar = arguments.getBoolean(TransactionsFragment.KEY_TABBAR, true)

и уже в одном из своих методов прописываю следующее условие

setupFragment(accountsPresenter.getFragmentTitle(), showTabbar && accountsPresenter.isTopLevel(), FabState.ADD_TRANSACTION)

но мне выпадает ошибка, видимо как то не так объявляю переменную

FATAL EXCEPTION: main
                                                                     Process: com.fentury.android, PID: 21715
                                                                     java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Bundle.getBoolean(java.lang.String, boolean)' on a null object reference
                                                                         at com.fentury.android.features.transactions.list.TransactionsFragment.onCreate(TransactionsFragment.kt:69)
указывает на строку которая у меня в onCreate()
showTabbar = arguments.getBoolean(TransactionsFragment.KEY_TABBAR, true)
Kirill Ashikhmin
@KirillAshikhmin
@mnewlive значит arguments == null
mnewlive
@mnewlive
@BOOMik ну не совсем, решил вопрос следующим образом
showTabbar = arguments?.getBoolean(TransactionsFragment.KEY_TABBAR, true) ?: false
mnewlive
@mnewlive

Сейчас ситуация такая
я объявляю переменную

private val paint = Paint()

после чего сэчу ей значение в нужном мне методе

paint.colorFilter = PorterDuffColorFilter(AppResources.getColor(android.R.color.white), PorterDuff.Mode.SRC_IN)

сейчас хочу в объявлении переменной сразу же сэтить ей значение, но не выходит как следует

Dmitry Ikryanov
@HD97300
    private val paint = Paint().apply {
        colorFilter = PorterDuffColorFilter(AppResources.getColor(android.R.color.white), PorterDuff.Mode.SRC_IN)
    }
mnewlive
@mnewlive
@int-00h о точно, читал же про apply)
http://beust.com/weblog/2015/10/30/exploring-the-kotlin-standard-library/
Спасибо
koladdo
@koladdo
@mnewlive А скажите, пожалуйста, почему этот фрагмент кода написан так, как написан? Просто любопытно.
showTabbar.let { args.putBoolean(KEY_TABBAR, it) }
mnewlive
@mnewlive
@koladdo ну сюда я передавал аргументы ключа
ну т.е. let вызывает код, если значение не null, тогда значение перекладывает это значение в переменную it.
Dmitry Ikryanov
@HD97300
 fun newInstance(showTabbar: Boolean = true): TransactionsFragment {
            val fragment = TransactionsFragment()
            val args = Bundle()
            showTabbar.let { args.putBoolean(KEY_TABBAR, it) }
            fragment.arguments = args
            return fragment
        }
@mnewlive
1 - showTabbar не может быть null
2 - let сам по себе проверку на null также не делает и никуда не перекладывает
3 - в данном примере он и не нужен
mnewlive
@mnewlive
@int-00h
  1. почему не может то?
  2. showTabbar?.let вот так думаю было бы правильней написать.
  3. ну я вообще решил иным способом)
koladdo
@koladdo
@mnewlive Потому что он не nullable, поэтому выражение не имеет смысла с этой точки зрения, и мне было любопытно для чего тогда.
swh
@sswwhh
он не nullable, но он может быть null
koladdo
@koladdo
@sswwhh Судя по параметру - нет. Как?
swh
@sswwhh
сорян, не обратил внимание ) всё верно, упадёт раньше
mnewlive
@mnewlive
Но ошибку на NPE я то получил))
koladdo
@koladdo
@mnewlive Она в совершенно другом месте.
Dmitry Ikryanov
@HD97300
В другом месте, насколько я помню, при получении параметров.
Выше же код, где они помещаются в bundle
mnewlive
@mnewlive

Хочу переделать использование .let на getOrNull
в данном методе

fun getFragmentTitle(): String = fullData.find {
                    it.key == firstLevelGuid
                }?.list?.let { it[0].value?.cardTitle } ?: "some"

пробую писать после list?.getOrNull и начинаются проблемы

Dmitry Ikryanov
@HD97300
@mnewlive какие?
mnewlive
@mnewlive
@int-00h ну я пробую нечто подобное(
}?.list?.getOrNull([0].value?.cardTitle) ?: "Some"
и естественно он у меня находит тип модели а не String
Dmitry Ikryanov
@HD97300
ну так [index] == get(index), соответственно ?.list?.getOrNull(0)?.value?.cardTitle ?: "Some"
mnewlive
@mnewlive
@int-00h ... а я видимо с позицией спутал...тыкаюсь в эти скобки и тыкаюсь
благодарю
mnewlive
@mnewlive

Есть класс модели

class AccountModelNode private constructor(val key: String, val isLeaf: Boolean) {

    constructor(key: String, value: AccountCardViewModel) : this(key, true) {
        this.value = value
    }

    constructor(key: String, list: List<AccountModelNode>) : this(key, false) {
        this.list = list
    }

    var value: AccountCardViewModel? = null
        private set
    var list: List<AccountModelNode>? = null
        private set
}

b класс AccoundCardViewModel это data class, который содержит некоторые поля:

data class AccountCardViewModel(
    val isAutomatic: Boolean = false,
    val currencyCode: String = "",
    val description: String = "")

Как вместо класса AccoundCardViewModel в модели использовать только поля AccountCardViewModel?

mnewlive
@mnewlive
Наткнулся на спорный но вроде решаемый вопрос)
но не совсем понимаю его принцип.
Задача стояла в том, чтобы обявить переменную в интерфейсе.
как я понял можно это сделать с помощью расширения
mnewlive
@mnewlive

Пробую следующим образом

interface ApiInterface {
object Prop {
        operator fun getValue(thisRef: Any, property: KProperty<*>): String = "message"
    }
 @Multipart
    @POST(API_FEEDBACK_PATH)
    fun postFeedback(@Part("message") message: RequestBody,
                     @PartMap files: HashMap<String, RequestBody>,
                     @Part database: MultipartBody.Part?): Call<FeedbackResponse>
}

val ApiInterface.prop: String by ApiInterface.Prop

вместо "message " в методе postFeedback подставить ApiInterface.Prop.getValue() но не выходит

koladdo
@koladdo
Привет. Как в котлине toString() для Float работает? Не могу найти имлементацию.
koladdo
@koladdo
Ок. Разобрался. Использует реализацию java.
mnewlive
@mnewlive

не могу въехать как можно десериализовать .json класс??
ну то есть у меня уже есть класс
мне нужно его десериализовать в тестах для проверки переменных в нём.
В тест создал переменную

private var gson: Gson = GsonBuilder().registerTypeAdapter(AuthTypeData::class.java, FixturesManager.getAuthTypes()).create()

где getAuthTypes у меня это подтягивания фикстур:

 @Throws(Exception::class)
    fun getAuthTypes() =            streamToString(InstrumentationRegistry.getContext().resources.assets.open("${FixturesManager.DB_FIXTURES_PATH}AuthTypes.json"))

после этого пробую обращаться к одной из переменных класса AuthTypeData:

val authTypeData = AuthTypeData()
        authTypeData.code = "code"

и уже в тесте проверяю совпадают ли данные переменной

assertThat((fragment.arguments.getSerializable(CredentialsFragment.KEY_AUTHTYPE_DATA) as AuthTypeData).code,
                equalTo("code"))

но тест неверный, так как ума не приложу как запилить туда переменную из json файла

Denis Volyntsev
@Defuera
Можно ли реализовать статическую инициализацию в object?
если я просто добавляю init block, то получаю java.lang.NoClassDefFoundError: Could not initialize class MySingleton
Diwixis
@Diwixi
Попробуй companion object
helen_keyns
@helena_keyns_twitter

Приглашаем на вебинар «С чего начать разработку под Android»!

Старт: 19.03.18 в 19:00

Спикер: Андрей Мирошниченко - Senior Software Enginee at Zeo Alliance. Более 6 лет занимается разработкой под Android, из них 2 года пишет на Kotlin и программирует под Embedded Linux.

О чем Вы узнаете во время вебинара:

  1. Введение в разработку под Android
  2. Средства разработки для Android
  3. Работа с Logcat в Android Studio
  4. Основы работы с Analyze Stacktrace
  5. Сбор и анализ ошибок с помощью Fabric
  6. Отладка Kotlin кода

А также вы получите ответ на любой интересующий Вас вопрос.

Ссылка на мероприятие: https://www.facebook.com/events/597512283922490/

Leonov Oleg
@oleonov
Ну не знаю. 6 лет опыта это как-то не много.
Alexander
@XLPI
@helena_keyns_twitter о, здорово, хочу посетить ваш вебинар, а очно можно?
Alexander
@XLPI
Хм...6 лет опыта мало? Андроиду всего 9 лет, а стабильные версии выпускаются только на протяжении 7 лет
Leonov Oleg
@oleonov
@XLPI у меня 8 лет опыта разработки под Android. Поэтому 6 для меня мало) Для кого-то достаточно, возможно))
Alexander
@XLPI
@oleonov понял, да тогда да, интересно статистику по кол-ву лет оптыта разработчиков посмотреть...
helen_keyns
@helena_keyns_twitter
@XLPI очно, к сожалению, нельзя. Но в будущем у нас могут быть оффлайн мастер-классы)
Rustem Saitkulov
@atetc
@helena_keyns_twitter пожалуйста используйте на будущее этот канал для публикации таких объявлений: http://bit.ly/andr-events
Vladlen
@v4ekmarev
всем привет, может кто подсказать что тут не так? fun getOrderProgress(): Flowable<OrderProgress> {
return publishSubjectOrderId.debounce(3000, TimeUnit.MILLISECONDS)
.distinctUntilChanged()
.flatMap { t: String->
runGetOrderProgress(t)
}
}
мне говорит что нужно подать ObservableSource<out>
Nick Unuchek
@Kolyall
Всем привет, кто-нибудь встречал такую ошибку libgdx/libgdx#5449 ?
dimalaker27
@dimalaker27
Привет. помогите с проблемой ...
как программно открыть чат в viber или программно написать сообщение у viber ?
из стандартных контактов телефона же можно сразу написать или позвонить в соц
Steven Parker
@ConnectSteven_twitter
https://github.com/Mindinventory/vanilla-place-picker - Revire this site and Share Review
Steven Parker
@ConnectSteven_twitter
Must checkout this. Easy to use customisations of standard NavigationDrawer: https://github.com/Mindinventory/minavdrawer
Please give your views guys.