小编Tar*_*run的帖子

UninitializedPropertyAccessException:lateinit属性pref尚未初始化

我知道这个问题已经回答[这里](lateinit属性尚未初始化).但这是由于黄油刀库问题但我的情况有所不同.完全不同.在我的情况下,当我在我的基本活动中使用匕首注入属性时,它显示我的错误引起:kotlin.UninitializedPropertyAccessException:lateinit属性pref尚未初始化

但是当我在我的子活动(登录活动)中使用它时,它的工作正常.

例如.pref.setLanguage("abc") - >它在登录活动中工作正常,但在基本活动中引发错误

这是我的代码:

BaseActivity

abstract class BaseActivity : AppCompatActivity() {
@Inject
lateinit var pref: AppSharedPreferences
@Inject
lateinit var utils: Utils
lateinit var mCurrentLanguage: String
protected lateinit var progressBarUtils: ProgressBarUtils

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    progressBarUtils = ProgressBarUtils(this)
    mCurrentLanguage = "EN"
    pref.setSelectedLanguage(mCurrentLanguage)   
}
}
Run Code Online (Sandbox Code Playgroud)

LoginActivity

class LoginActivity : BaseActivity() {
private val TAG = this.javaClass.name
lateinit var loginViewModel: LoginViewModel
@Inject
lateinit var viewModelFactory: LoginViewModelFactory


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_login)
    AndroidInjection.inject(this)
    loginViewModel …
Run Code Online (Sandbox Code Playgroud)

android kotlin dagger-2

13
推荐指数
1
解决办法
3万
查看次数

react-native 中的 flow 和 eslint 有什么区别?我应该使用哪一种?我可以同时使用吗?

我被要求在 react-native 的项目中使用静态分析器。因为我已经在使用 Eslint ,它更漂亮,这也有助于识别编译时错误,然后我在 react-native 中找到了用于静态分析的流程。

它让我感到困惑,因为 eslint 做了类似的工作。

我没有发现 flow 和 eslint 之间的区别。所以我的问题是

  1. eslint 和 flow 解决相同的目的吗?
  2. 如果不是,那么什么时候使用 eslint 以及什么时候使用 flow
  3. 我可以同时使用 flow 和 eslint 吗?

flowtype react-native

10
推荐指数
2
解决办法
1659
查看次数

Annotation参数必须是一个编译时间常数

我已经看到了这个问题。类似的错误,但就我而言是不同的。

与Room一起工作时,我正在创建桌子。工作正常。

@Daointerface 
UserDao {
@Query("SELECT * FROM user")
fun getAll(): List<User>

@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(user: User)

@Delete
fun delete(user: User)}
Run Code Online (Sandbox Code Playgroud)

但后来我发现所有表名都必须存储在不同的类中。如表名“用户”->存储在不同的类中。

例如。

class Table {
companion object {
    const val USER_TABLE = "user"
}}
Run Code Online (Sandbox Code Playgroud)

但是下面的代码不起作用。它不是从Table类中获取表名。给出编译时错误。“ Annotation参数必须是编译时间常数”,请帮帮我。

@Query("SELECT * FROM $Table.USER_TABLE")
fun getAll(): List<User>
Run Code Online (Sandbox Code Playgroud)

android kotlin android-room android-architecture-components android-jetpack

8
推荐指数
2
解决办法
8132
查看次数

当媒体录制暂停时,媒体播放器不播放录制内容

我正在开发一个应用程序,用户可以在其中录制音频,如果 api 级别高于 23,则暂停它。并且用户可以收听暂停的录音。
但我发现,用户无法收听暂停的音频。但我想要的是用户可以收听暂停的音频

当录音停止时,它可以播放,因为它存储在本地路径中。
我还检查了 android 文档和许多关于堆栈溢出的答案,例如如何播放暂停的音频,但我找不到任何特定的链接。

我在这里分享我的问题。如果您有任何解决方案或找到任何链接如何解决我的问题,我们将不胜感激。

即使我需要分享我的代码,也请告诉我。因为我认为没有必要共享代码。因为当用户停止录音时,它应该可以播放。

下面是我的代码

public class AudioRecordingActivity extends BaseActivity
    implements AppDialog.IYesListener,
    AppDialog.IDiscardRecordingListener, AppDialog.ICancelRecordingListener,
    PlayAudioManager.IVoiceCompleteListener,
    MediaRecorder.OnInfoListener {

private static final Logger LOGGER = LoggerFactory.createLogger(AudioRecordingActivity.class);
private TaskDetailsViewModel mViewModel;
private ActivityAudioRecordingBinding mBinding;
private AssignmentIdsModel mAssignmentIdModel;
private long mStartTime = 0;
private long mPauseTime=0;
private MediaRecorder mRecorder;
private File mOutputFile;
public final ObservableField<Integer> mAudioState = new ObservableField<>(0);
private String mAudioPath;
private int mMaxAudioTime;
private int[] amplitudes = new int[100];
private int i = 0;
private Handler …
Run Code Online (Sandbox Code Playgroud)

android android-mediaplayer android-mediarecorder

5
推荐指数
1
解决办法
326
查看次数

错误:无法将 CoroutinesRoom 类中的方法执行应用于给定类型

我正在使用带有房间数据库的协程,并且在从房间获取数据时出现以下错误

\app\build\generated\source\kapt\debug\co\location\locationapp\data\source\local\LocationDataDao_Impl.java:87: 错误:CoroutinesRoom 类中的方法执行不能应用于给定类型;return CoroutinesRoom.execute(__db, true, new Callable() { ^ required: RoomDatabase,Callable,Continuation found: RoomDatabase,boolean,>,Continuation
reason: cannot infer type-variable(s) R(实际和形式参数列表在length) 其中 R 是一个类型变量:R 扩展了在方法 execute(RoomDatabase,Callable,Continuation) 中声明的对象,其中 CAP#1 是一个新的类型变量:CAP#1 extends Object super:从捕获的 ? super Unit 的单元

下面是我的 Dao 类

@Dao
interface LocationDataDao {

    @Query("SELECT * FROM location limit :limit offset :offset")
    suspend fun queryLocationData(limit: Int, offset: Int): List<Location>

    @Query("DELETE FROM location")
    suspend fun deleteAllLocationData(): Int

    @Insert(onConflict = OnConflictStrategy.IGNORE)
    suspend fun insertAllLocationData(locationData: List<Location>)

}
Run Code Online (Sandbox Code Playgroud)

下面是我的存储库类

class LocationRepository @Inject
constructor(private val apiInterface: ApiInterface, private …
Run Code Online (Sandbox Code Playgroud)

kotlin android-room kotlin-coroutines

4
推荐指数
1
解决办法
1030
查看次数