class @Inject constructor (callBack: Callback): RecyclerView.Adapter...
@Binds fun bindCallback(activity: MyActivity): Adapter.Callback
我怎样才能做到这一点呢?我如何提供或绑定活动或片段与刀柄?
解决方法相当简单。
所以几天前我回来看我的问题,只看到仍然没有新的解决方案,所以我尝试了Bartek解决方案,但不能使它工作,而且即使它工作了,干净的Hilt代码变得太乱了,所以我做了一点调查,玩了一点,发现解决方案实际上是愚蠢的容易。
是这样的:
@HiltAndroidApp
class MyApp: Application()
@AndroidEntryPoint
class MainActivity : AppCompatActivity(), SomeClass.Callback {
@Inject
lateinit var someClass: SomeClass
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onWhatEver() {
// implement
}
}
class SomeClass @Inject constructor(
private val callback: Callback
) {
fun activateCallback(){
callback.onWhatEver()
}
interface Callback{
fun onWhatEver()
}
}
@Module
@InstallIn(ActivityComponent::class)
object SomeModule{
@Provides
fun provideCallback(activity: Activity) =
activity as SomeClass.Callback
}
这就是我们所需要的。我们不能用@bind将活动绑定到回调,因为它需要显式提供并强制转换到回调,以便应用程序可以构建。
该模块安装在ActivityComponent中,并且知道一个通用的“活动”,如果我们将它转换到回调,Hilt是内容,并且活动绑定到回调,并且Hilt将知道如何提供回调,只要它在特定的活动范围内。
多个活动/片段
@HiltAndroidApp
class MyApp: Application()
@AndroidEntryPoint
class BooksActivity : AppCompatActivity(), BooksAdapter.Callback{
@Inject
lateinit var adapter: BooksAdapter
...
override fun onItemClicked(book: Book) {...}
}
}
@AndroidEntryPoint
class AuthorsActivity : AppCompatActivity(), AuthorsAdapter.Callback{
@Inject
lateinit var adapter: AuthorsAdapter
...
override fun onItemClicked(author: Author) {...}
}
class BooksAdapter @Inject constructor (
val callback: Callback
) ... {
...
interface Callback{
fun onItemClicked(book: Book)
}
}
AuthorsAdapter
class AuthorsAdapter @Inject constructor (
val callback: Callback
) ... {
...
interface Callback{
fun onItemClicked(auhtor: Auhtor)
}
}
AuhtorsModule
@Module
@InstallIn(ActivityComponent::class)
object AuthorsModule {
@Provides
fun provideCallback(activity: Activity) =
activity as AuthorsAdapter.Callback
}
Books模块
@Module
@InstallIn(ActivityComponent::class)
object BooksModule {
@Provides
fun provideCallback(activity: Activity) =
activity as BooksAdapter.Callback
}
我是新来的,用匕首。所以,我不能解决这个有什么问题。我只想问在这里解决它。 这是错误: c:\ Users \ MSI \ Documents \ MyAndroidProjects \ movie projects \ App \ build \ generated \ hilt \ component _ sources \ debug \ com \ example \ movie App
我的应用程序(最小API14)使用带有3个选项卡的ActionBar。选项卡是:i。输入数据(约10个片段)ii。管理数据(15个片段)三.查看数据(8个片段)。每个选项卡都有一个默认片段,但根据用户的选择会有多个片段。 我希望用户能够在3个选项卡之间滑动(通过滑动内容),因此我需要使用ViewPager和兼容性库V4。 我得到的建议(经过大量研究)是使用一个MainActivity,它承载Act
我试图遵循官方google文档https://developer.android.com/tools/data-binding/guide.html中的数据绑定示例 只是我试图将数据投标应用于一个片段,而不是一个活动。 我当前在编译时遇到的错误是 我怀疑不知道它应该绑定到哪个布局文件-因此出现错误。有什么建议吗?
问题内容: 从Activity中包含的RecyclerView的适配器中,我试图在按下RecyclerView的元素时启动一个片段,这是我现在的代码: 我测试了它是否启动了我创建的一些“测试活动”,所以我知道除了片段启动之外的所有功能都可以正常工作。 错误在这里: 我正在启动作为活动的Fragment,所以当我运行应用程序时,它崩溃了,并告诉我在清单中将MainFragment声明为活动。 如何从
//使用startActivity(intent)也不起作用//无论我做什么,应用程序都会崩溃
使用Guice 3.0,我尝试注入一个提供程序,该提供程序可以抛出特定的已检查异常。所以我使用了抛出提供者扩展。 我为提供者创建了一个接口: 及其实施: 我在要注入提供者的对象上使用@Inject注释: 现在,我的问题是:如何绑定这个提供者? 由于使用了泛型,我想到了使用TypeLiteral: 但是对于这个bind()方法来说,