Tag: 安卓

Kotlin绑定视图:如何区分视图variables和局部variables?

我使用Kotlin视图绑定获取视图引用和设置数据视图,但我有一个问题: 我有一个名为title的本地variables val title = “any text” 并在视图中,我有一个ID 标题的TextView 所以我怎么区分它们呢?

Kotlin kotlinClass.class.getName()不能返回包名,而只能返回简单的类名

AClass.class.getName(); 如果AClass是一个java类,这个方法将返回包名和类名。 但是当我将AClass java文件转换为Kotlin文件时,它只会返回一个类名。 所以系统找不到这个类的路径 上面的代码

在Kotlin中使用FirebaseListAdapter

我试图实现一个ListView与FirebaseListAdapter附加在它上面。 我需要显示适配器内的字符串列表,所以我使用String作为generics。 Firebase数据库的结构是这样的: 我需要显示在users节点(102127 …,102133 …等)下可用的密钥,所以我使用此代码来创建适配器: val ref = db.getReference(MATCHES_REF).child(match).child(USERS_REF) val adapter = object : FirebaseListAdapter(this, String::class.java, R.layout.cell_friends, ref) { override fun populateView(view: View, s: String, i: Int) { val text = view.findViewById(R.id.text_view) as TextView text.text = s } } listView?.adapter = adapter 这是Android Studio中显示的错误: 错误:(50,32)以下函数都不能用所提供的参数调用:public constructor FirebaseListAdapter(activity:Activity !, parser :((DataSnapshot!) – > String!)!,@LayoutRes modelLayout:Int,query […]

如何使用Tab布局与数据绑定库和Kotlin

我试图在Kotlin项目中使用Tab Layout + Android Data Binding Library,但是我没有成功。 请告诉我我做错了什么? 这是我的活动: class WoActivity : BaseActivity() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val binding = DataBindingUtil.setContentView(this, R.layout.activity_wo) as ActivityWoBinding binding.wo = WorkOrder() setSupportActionBar(binding.toolbar) supportActionBar!!.setDisplayHomeAsUpEnabled(true) binding.setHandler(this); binding.setManager(getSupportFragmentManager()); } companion object { @BindingAdapter(“handler”) @JvmStatic fun bindViewPagerAdapter(view: ViewPager, activity: WoActivity) { val adapter = WOPagerAdapter(activity.supportFragmentManager) adapter.addFragment(WoTabWoFragment.newInstance(), view.context.getString(R.string.work_order)) adapter.addFragment(WoTabScheFragment.newInstance(), view.context.getString(R.string.scheduling)) view.adapter = […]

如何避免Kotlin中同名冲突的types?

我对kotlin非常陌生,而且我正在从一本书建立的应用程序中遇到一些麻烦。 我有两个名为预测单独的包中的类,我试图定义一些函数在一个使用其中同名的类包。 该书说导入Forecast类作为ModelForecast,我做了,但现在我有一个问题追踪这种types的不匹配错误的来源。 看来我的convertForecastListToDomain()方法正在期待其他的东西? 请帮我find我正在犯的错误。 如果这件事很简单,我不会感到惊讶,但我仍然无法find它。 MainActivity.kt: package com.example.zacharymcdaniel.weatherkot import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView import com.example.zacharymcdaniel.weatherkot.domain.Forecast import org.jetbrains.anko.find class MainActivity : AppCompatActivity() { private val url: String = “http://openweathermap.org/” private val items = listOf( “Mon 6/23 – Sunny – 31/17”, “Tue 6/24 – Foggy – 21/8”, “Wed 6/25 – Cloudy – 22/17”, […]

Kotlin:只读不可变types对可变types的内部variables的访问

在Android中学习ViewModel的时候,出现了一个像Kotlin想要解决的问题。 在下面的代码中,我们可以看到MutableLiveData值正在用来编辑值和指标。 但是,我们不希望这些可变值暴露给其他任何人,特别是Android生命周期的成员。 我们希望Android生命周期成员有权读取值但不设置它们。 因此,下面显示的3个暴露函数是LiveData 不可变类型。 是否有一个更简单或更简洁的方法来公开只能在内部进行编辑的只读值? 这看起来像Kotlin是为了避免:模板的详细程度。 class HomeListViewModel: ViewModel(){ //Private mutable data private val repositories = MutableLiveData<List>() private val repoLoadError = MutableLiveData() private val loading = MutableLiveData() //Exposed uneditable LIveData fun getRepositories():LiveData<List> = repositories fun getLoadError(): LiveData = repoLoadError fun getLoadingStatuses(): LiveData = loading init{…//Do some stuff to MutableLiveData } } 非Android情况可能类似: class […]

为什么json字符串为空时,我将一个内部对象传递给Gson()。toJson(object)in Kotlin?

我使用Kotlin中的Gson将对象转换为json字符串。 var json2可以返回正确的结果,但var json1返回null,为什么? import android.os.Bundle import android.support.v7.app.AppCompatActivity import bll.SettingManage import info.dodata.mirror.R import model.MSetting import com.google.gson.Gson import utility.PreferenceTool class UIMain : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.layout_main) data class WiFiDefA(val Name:String, val Status: String) var aWiFiDefA=WiFiDefA(“a”,”b”) var json1=Gson().toJson(aWiFiDefA) var aWiFiDefB=WiFiDefB(“c”,”d”) var json2=Gson().toJson(aWiFiDefB) } data class WiFiDefB(val Name:String, val Status: String) }

科特林匕首2.11

我试图注入Dagger 2.11 Retrofit in Fragment,但是我不能注入, 1)问题是AndroidInjection.inject(this)需要DaggerFragment,我不能将BaseFragment更改为DaggerFragment对象,因为它会导致问题,而替换片段 2)我也有点混淆匕首的架构,因为我已经看过很多匕首2.11或以上的演示代码,他们正在为每个活动创建模块。 所以我需要为每个活动创建单独的模块和组件 open class BaseFragment : Fragment() class HomeFragment : BaseFragment() { @Inject lateinit var retrofit: Retrofit override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } override fun onAttach(context: Context?) { AndroidInjection.inject(activity) super.onAttach(context) } override fun onAttach(activity: Activity?) { AndroidInjection.inject(this) super.onAttach(activity) } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View […]

Kotlin – 在view.getTag()上的TypeCastException

我有一个名为ItemClickSupport的类,它将一个ItemClick附加到一个RecyclerView: 这是init函数: init { mRecyclerView.setTag(R.id.item_click_support, this) mRecyclerView.addOnChildAttachStateChangeListener(mAttachListener) } 并有一个companion object将其添加到recyclerView: companion object { fun addTo(view: RecyclerView): ItemClickSupport { var support: ItemClickSupport? = view.getTag(R.id.item_click_support) as ItemClickSupport if (support == null) { support = ItemClickSupport(view) } return support } } 当我运行我的应用程序,并尝试将clickListener添加到recyclerView,我得到一个 引起:kotlin.TypeCastException:null无法转换为非空typescom.dancam.subscriptions.Support.ItemClickSupport at com.dancam.subscriptions.Support.ItemClickSupport $ Companion.addTo(ItemClickSupport.kt:80)at com.dancam .subscriptions.AddSubscription.AddSubscription.onCreate(AddSubscription.kt:79) 第一个错误指向addTo函数中的这一行: var support: ItemClickSupport? = view.getTag(R.id.item_click_support) as ItemClickSupport 第二个在我的main_activity这个: […]

试图编写高效的代码来使用Kotlin更新背景颜色

下面的代码工作,但我觉得有可能是一个更有效/更清洁的方式。 我是Kotlin和Android开发的新手,所以请放轻松点。 ;-)任何增强将非常赞赏,因为我一直在寻求改善。 fun updateBackgroundColor() { val sharedPref = PreferenceManager.getDefaultSharedPreferences(this) // Gets the text color from the shared preferences file val backgroundColor = sharedPref.getString(“background_color”, “”) val fullscreenView = findViewById(R.id.fullscreen_content) val fullView = fullscreenView as TextView? // Changes the text color based on the color the user has selected in Settings/Preferences if (backgroundColor == “blue”) { […]