Tag: 安卓

应用; 曾经使用过不同的AppComponent; 在预先验证期间

我在一台设备上运行我的espresso测试时出现问题 – 出现以下错误: W/dalvikvm(10180): Class resolved by unexpected DEX: Lorg/ligi/passandroid/App;(0x43876120):0x660f9000 ref [Lorg/ligi/passandroid/AppComponent;] Lorg/ligi/passandroid/AppComponent;(0x43876120):0x64e2f000 W/dalvikvm(10180): (Lorg/ligi/passandroid/App; had used a different Lorg/ligi/passandroid/AppComponent; during pre-verification) D/AndroidRuntime(10180): Shutting down VM W/dalvikvm(10180): threadid=1: thread exiting with uncaught exception (group=0x433101a0) E/MonitoringInstrumentation(10180): Exception encountered by: Thread[main,5,main]. Dumping thread state to outputs and pining for the fjords. E/MonitoringInstrumentation(10180): java.lang.IllegalAccessError: Class ref in pre-verified […]

Varargs Kotlin Java互操作不正常

对于makeSceneTransitionAnimation,有两个静态函数 public static ActivityOptionsCompat makeSceneTransitionAnimation(Activity activity, View sharedElement, String sharedElementName) 和 public static ActivityOptionsCompat makeSceneTransitionAnimation(Activity activity, Pair<View, String>… sharedElements) 第一个函数调用在Kotlin中正常工作,但在调用第二个函数时,这两个调用都会返回错误 val imageTransition = Pair<View, String>(imageView, imageView.getTransitionName()); val textTransition = Pair<View, String>(textView, textView.getTransitionName()); val transitionList = Array(2, { imageTransition }); transitionList[1] = textTransition; val options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, *transitionList); 和 val imageTransition = Pair<View, String>(imageView, imageView.getTransitionName()); val […]

房间:使用@Transaction时收到错误

我有一个方法在我的DAO类中使用@Transaction注释,这是导致以下错误: DAO方法只能用以下其中一种进行注释:插入,删除,查询,更新 这是我的班级: @Dao interface Dao { @Insert(onConflict = REPLACE) fun insertList(chacaras: List<String>) @Query("SELECT * FROM chacara WHERE cityId = :cityId") fun getListOfCity(cityId: String): LiveData<List<String>> @Delete fun deleteList(chacaraList: List<String>) @Transaction fun updateList(list: List<String>){ deleteList(list) insertList(list) } } 当我删除用@Transaction注解的方法时,它正常编译。 有没有什么办法解决这一问题?

可自定义parcelable对象

我有一个具有类型ArrayList<>的成员变量的类。 这两个类实现parcelable。 我被困在如何完成对其他类的引用的类。 这是我有什么: data class Tab (val name: String, val title: String, val color: String, val sections: ArrayList<Section>) : Parcelable { constructor(parcel: Parcel) : this( parcel.readString(), parcel.readString(), parcel.readString(), parcel.readTypedList<Section>(sections, Section.CREATOR)) override fun writeToParcel(dest: Parcel?, flags: Int) { dest?.writeString(name) dest?.writeString(title) dest?.writeString(color) dest?.writeTypedList<Section>(sections) } override fun describeContents(): Int { return 0 } companion object CREATOR : […]

Firebase存储的OnSuccessListener回调没有调用

通过Firebase存储上传文件时,onSuccess方法不会调用。 我目前正在运行Android Studio 3.0 Canary 2,其中包含“com.google.firebase:firebase-storage:10.2.6”。 fun uploadImage(pathToImage: String, downloadCallback: FirebaseCallback<String?>) { val file = Uri.fromFile(File(pathToImage)) val ref = mStorRef.child("images/"+file.lastPathSegment) ref.putFile(file).addOnSuccessListener { object : OnSuccessListener<UploadTask.TaskSnapshot> { override fun onSuccess(taskSnapshot: UploadTask.TaskSnapshot?) { val url = taskSnapshot?.downloadUrl Log.d("FirebaseManager", "Upload Successful") downloadCallback.callback(url.toString()) } } } }

Android LiveData:MutableData从不处于活动状态

我有以下ViewModel : class SignInViewModel @Inject constructor(val api: BillingApi) : ViewModel() { val googleApiClient: MutableLiveData<GoogleApiClient> = MutableLiveData() } 在我的Activity.onCreate(onSavedInstanceState: Bundle?)我有: override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) … signInViewModel = ViewModelProviders.of(this) .get(SignInViewModel::class.java) signInViewModel.googleApiClient.observe(this, Observer<GoogleApiClient?> { … // here never gets trigged } 后来我的代码我有signInViewModel.googleApiClient.value = it 。 在这一点上(点击按钮后,所以我处于恢复状态),我期待的LiveData触发我的观察员,但事实并非如此 。 在调试时,我注意到我的MutableLiveData从来没有active状态。 我究竟做错了什么? 请,我知道我在示例中使用的是一个GoogleApiClient实例,它应该使用GoogleApiClient和GoogleApiClient进行初始化,但这不是问题。 我想动态地设置它,让我的观察者被触发。 编辑 :添加调用setValue的代码 signInViewModel.someMethod(this) .observeOn(AndroidSchedulers.mainThread()) .subscribe(Consumer […]

拦截触摸事件并根据运动事件状态重新引导它

我在Android中创建了一个从RelativeLayout继承的自定义视图。 在这个视图内部是一个OverScroller,当触摸事件发生时用于处理视图的滚动: class MyCustomView(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : RelativeLayout(context, attrs, defStyleAttr) { constructor(context: Context) : this(context, null, 0) constructor(context: Context, attrs: AttributeSet) : this(context, attrs, 0) private val scroller = OverScroller(context, FastOutLinearInInterpolator()) private var currentY = 0 private val gestureDetector = GestureDetectorCompat(context, object : GestureDetector.SimpleOnGestureListener() { override fun onDown(event: MotionEvent?): Boolean { // […]

将textView替换为NumberPicker – Android

所以我有一些textViews ,他们的输入是数字,但为了不太容易出错我想用numberPickers取代它。 我做了什么 TextViews工作 NumberPickers工作 任何数学和计算工程 我需要的是 : 要替换输入法 这是我对我的textViews when { time.text.isEmpty() && (distance.text.isNotEmpty() && pace.text.isNotEmpty()) -> calculatePace(null, distance.text.toString().toDouble(), pace.text.toString()) distance.text.isEmpty() && (time.text.isNotEmpty() && pace.text.isNotEmpty()) -> calculatePace(time.text.toString(), null, pace.text.toString()) pace.text.isEmpty() && (time.text.isNotEmpty() && distance.text.isNotEmpty()) -> calculatePace(time.text.toString(), distance.text.toString().toDouble(), null) else -> { Toast.makeText(this, "Please check fields", Toast.LENGTH_SHORT).show() } } 这些是我的pickers : val pickerMinutes = numberPicker […]

Android检查文本输入(时间)是否与格式匹配

我有两个文本字段作为输入时间(mm:ss)我如何创建一个支票(与吐司,我知道如何做吐司xD),看看它是否匹配的格式,如果没有,然后传递吐司? 一直在尝试,但没有管理任何东西。 我不知道你是否需要比这更多的东西,但这里是我通过他们的地方: val time = findViewById<NumberPicker>(R.id.time) as TextView val distance = findViewById<NumberPicker>(R.id.distance) as TextView val pace = findViewById<NumberPicker>(R.id.pace) as TextView calculate.setOnClickListener { when { time.text.isEmpty() && (distance.text.isNotEmpty() && pace.text.isNotEmpty()) -> calculatePace(null, distance.text.toString(), pace.text.toString()) distance.text.isEmpty() && (time.text.isNotEmpty() && pace.text.isNotEmpty()) -> calculatePace(time.text.toString(), null, pace.text.toString()) pace.text.isEmpty() && (time.text.isNotEmpty() && distance.text.isNotEmpty()) -> calculatePace(time.text.toString(), distance.text.toString(), null) else -> { […]

Observable.combineLatest更新到RxJava 2.xx后导致错误 – 不能推断类型

最近几天,我正试图将我的项目从RxJava 1.xx迁移到RxJava 2.xx我有这个简单的方法。 如果我使用rxjava 1.xx(rx.Observable)中的Observable,一切都可以。 然而,当我用“新”观察者(io.reactivex.Observable)替换它时,我得到一个错误:“类型推断失败,请明确指定” fun <T1, T2, T3, R> combineLatestValue3Nullable(observable1: Observable<T1?>, observable2: Observable<T2?>, observable3: Observable<T3?>, merge: (T1, T2, T3?) -> R): Observable<R?> { return Observable.combineLatest(observable1, observable2, observable3) { value1, value2, value3 -> var result: R? = null if (value1 != null && value2 != null) { result = merge(value1, value2, value3) } result […]