我在将匕首注入视图模型时遇到问题。问题是旋转屏幕时丢失表单输入。问题是我的注入还是初始化我的视图模型?这是我的视图模型;
@HiltViewModel
class ProfilIslemViewModel @Inject constructor(application: Application,
private val kullaniciService: KullaniciService,
private val kullaniciDao:KullaniciDao
): AndroidViewModel(application), CoroutineScope {...}
这是我使用这个视图模型的片段;
@AndroidEntryPoint
class ProfilIslemFragment:Fragment(), ProfilIslemFragmentClickListener {
private val viewModel: ProfilIslemViewModel by viewModels();
...
}
这里是注入类的模块;
@Module
@InstallIn(SingletonComponent::class)
object KutuphanemAppModule {
@Singleton
@Provides
fun provideKutuphanemDatabase
(@ApplicationContext context:Context) = Room.databaseBuilder(
context,
KutuphanemDatabase::class.java,
KUTUPHANEM_DB_NAME
).build();
@Singleton
@Provides
fun provideRetrofit(client: OkHttpClient):Retrofit =
Retrofit.Builder()
.baseUrl(API_URL)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
@Singleton
@Provides
fun provideHttpClient(customSharedPreferences: CustomSharedPreferences):OkHttpClient{
return OkHttpClient.Builder().addInterceptor(object:Interceptor{
override fun intercept(chain: Interceptor.Chain): Response {
val request:Request = chain.request().newBuilder().addHeader("Authorization",
"Bearer "+customSharedPreferences.getStringFromSharedPreferences(APP_TOKEN_KEY).trim()).build();
return chain.proceed(request);
}
}).build();
}
@Singleton
@Provides
fun provideParametreDao(database: KutuphanemDatabase) = database.getParametreDao();
@Singleton
@Provides
fun provideParametreApi(retrofit: Retrofit):IParametreService = retrofit.create(IParametreService::class.java);
@Singleton
@Provides
fun provideKullaniciApi(retrofit: Retrofit):KullaniciService = retrofit.create(KullaniciService::class.java);
@Singleton
@Provides
fun provideKitapApi(retrofit: Retrofit):IKitapService = retrofit.create(IKitapService::class.java);
@Singleton
@Provides
fun provideKullaniciDao(database: KutuphanemDatabase) = database.getKullaniciDao();
}
当我旋转屏幕时,输入丢失了。如何解决这个问题?
答案 0 :(得分:0)
我发现了错误。它与我的视图模型或注入无关。它是由双向数据绑定引起的。但即便如此,我还是将这一行放入了 viewmodel 的构造函数中;
private val savedStateHandle: SavedStateHandle
我用这个参数控制状态。所以我的输入不会丢失。