小编ank*_*ag2的帖子

使用 WorkManager 更新 Room 中的数据库条目

我正在尝试WorkManager在 Android 中使用,因为到目前为止我已经使用AsyncTask. 我正在尝试更新Room database. 我创建了一个类Repository来在后台执行该过程,但我不知道这是否是正确的编码方式。我也有点困惑如何在 userViewModel 中调用该方法。

这是我的代码:

在存储库中:

inner class Test(ctx: Context, params: WorkerParameters) : Worker(ctx, params) {

    override fun doWork(): Result {
        fun updateUser(userId : Int , userName :String , userLastname: String){
            userDao.updateUser(userId, userName, userLastname)
        }
        return Result.success()
    }
}
Run Code Online (Sandbox Code Playgroud)

在视图模型中:

private val workManager: WorkManager = WorkManager.getInstance()
fun updateUser(userID: Int, userName: String, userLastname: String)    {
    workManager.enqueue(OneTimeWorkRequest.from(Repository.Test::class.java))

}
Run Code Online (Sandbox Code Playgroud)

也许这不是使用 WorkManager 的正确方法,所以如果有人能帮助我,我将不胜感激。

android kotlin android-room android-jetpack android-workmanager

6
推荐指数
1
解决办法
4862
查看次数

Jetpack compose:BottomSheet 状态更改回调

如何实现 JetPack Compose BottomSheet 状态更改的回调/侦听器机制?

类似于:

   @Override  
   public void onStateChanged(@NonNull View bottomSheet, int newState) {  
     if (newState == BottomSheetBehavior.STATE_COLLAPSED && mIsCollapsedFromBackPress){
        
     }
   }  

  @Override  
  public void onSlide(@NonNull View bottomSheet, float slideOffset) {  
  }  
});
Run Code Online (Sandbox Code Playgroud)

正如我们过去在 Java/Kotlin 中所做的那样。

现在,我将其作为 lambda 传递给另一个需要关闭底页的可组合项。

    val closeSheet: () -> Unit = {
        scope.launch {
            modalState.hide()
        }
    }
Run Code Online (Sandbox Code Playgroud)

但我想得到底页已完全折叠的回调,我可以继续我的任务。

我面临的实际问题: 我正在单击按钮将可组合项转换为位图。该按钮位于 BottomSheet 内部,需要转换的可组合项位于 BottomSheet 后面。因此,有时底页也会出现在位图中。我只想在底页完全折叠时触发该过程。

我在 SO 上找到了这个答案,但问题仍然是关于回调。不知道如何使用它。

android bottom-sheet android-jetpack android-jetpack-compose

6
推荐指数
1
解决办法
5363
查看次数

不使用Marshmallow调用Spinner onItemSelected

我的应用程序中有一个微调器,我实现如下:

   //Setup spinner
    spinner = (AppCompatSpinner) findViewById(R.id.toolbar_spinner);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.sections, R.layout.spinner_item);
    adapter.setDropDownViewResource(R.layout.spinner_list_item);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            mViewPager.setCurrentItem(position);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            mViewPager.setCurrentItem(0);
        }
    });
Run Code Online (Sandbox Code Playgroud)

这适用于我的手机运行API级别19(4.4.2),但在Marshmallow,API级别23(6.0)上运行,从不调用onItemSelected.

我已尝试使用android.widget.Spinnerandroid.support.v7.widget.AppCompatSpinner同样的结果.

知道为什么吗?

android android-spinner android-toolbar

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

嵌入式列表 - 如何?

@Entity
data class Products(
        val id:String,
        val title: String,
        val description: String,
        val imgUrl: String,
        val  usageRules : List<String>,  //what happens here?
)
Run Code Online (Sandbox Code Playgroud)

我正在玩 ROOM for android,我看到的大多数示例都没有解释如何创建一个包含 arrayList 的实体表。

有 @Embedded 似乎只嵌套另一个对象,但我试图嵌套一个名为 usageRules 的对象列表

我需要创建一个单独的使用规则表吗?问题是,每个使用规则都可以包含在上面的多个产品中,并且一个产品可以定义多个使用规则,因此它是多对多的关系。

ROOM 可以实现吗?

我知道在 Realm 中,我可以简单地将 UsageRule List<> 转换为 RealmList<>。ROOM 有等价物吗?

另一种选择是因为它只是一个字符串列表。我可以简单地创建一个名为 allUsage 的新表实体字段,该字段使用分隔符存储特定产品上的所有使用规则,然后当我想再次从 ROOM 构造数据对象时,我可以通过执行 allUsage.Split(.. )

仍然宁愿用另一种方式来做,因为我可能会遇到一个场景,其中使用规则不仅仅是一个字符串列表,而是一个对象列表......

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

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

是否可以从apk文件中提取google-services.json?

android开发新手。当我们分发.apk文件时,接收方可以提取google-services.json并使用我们的数据库或身份验证数据库。

我看 我有apk文件,是否可以从apk获取android studio项目?google-services.json是机密的吗? 并且可以反编译Android .apk文件吗? 但不要直接联系

android google-api google-play-services

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

我可以在房间中将非主键字段作为自动生成的值吗

我有带有复合主键的表。我可以将其中一个文件设为自动生成吗?

Secenario :我有一个teacher table包含字段 techerId、姓名、性别、角色、部门、等级的字段,它具有由角色、部门和等级组成的复合主 ID。如何使teacherid自动生成?

sqlite android android-database android-room

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

Android Studio:未知故障:执行时发生异常:

我研究过这方面的文章,但似乎没有任何效果。我正在尝试使用模拟器运行代码。模拟器上的所有数据都会被擦除。

当我在模拟器上运行代码时,出现错误:

在此输入图像描述

当我单击“确定”时。我收到此错误:

在此输入图像描述

我不确定如何删除此消息。有什么帮助吗?

到目前为止所做的事情:

android android-emulator apk

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

如何添加网络安全配置以在 Nougat 中启用 Charles 代理 SSL?

我正在尝试Charles ProxySamsung s8运行时启用SSL ,Android Nougat但不知道如何操作。

Nougat我能够在我的设备上成功记录多个应用程序的查尔斯会话之前。

已按照设置所有内容,但这是在 Android 中启用 Charles 时要遵循的第一步。我的用例与其他问题中的用例不同,因为我正在监视第三方应用程序并且我没有任何AndroidManifest.xmlres目录来创建network_configuration文件。

也经历了网络安全配置和做什么,但不知道如何。

有没有办法为我设备中的所有第三方应用程序启用代理?有什么方法可以将此网络配置添加到设备本身而不是单个应用程序?

感谢帮助。

ssl android android-7.0-nougat charles-proxy

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

在 TextInputEditText android 上不触发 onClick 事件

我有以下 TextInputEditText

<com.google.android.material.textfield.TextInputLayout
            android:focusableInTouchMode="true"
            android:id="@+id/from_textinput"
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:fontFamily="sans-serif"
            android:hint="@string/from"
            android:textColor="@color/colorDarkGrey"
            android:textColorHint="@color/colorDarkGrey"
            android:textSize="12sp"
            android:textStyle="normal"
            android:visibility="gone"
            app:boxCornerRadiusBottomEnd="5dp"
            app:boxCornerRadiusBottomStart="5dp"
            app:boxCornerRadiusTopEnd="5dp"
            app:boxCornerRadiusTopStart="5dp"
            app:boxStrokeColor="@color/colorPrimary"
            app:boxStrokeWidth="3dp"
            app:layout_constraintEnd_toStartOf="@+id/to_textinput"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/doNotDisturbCheckBox">

            <com.google.android.material.textfield.TextInputEditText
                android:onClick="@{() -> viewModel.openFromTimePickerClicked()}"
                android:focusableInTouchMode="true"
                android:id="@+id/from_textedit"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:editable="false"
                android:text="@{viewModel.doNotDisturbFrom}"
                android:textSize="16sp" />

        </com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

第一次触摸没有触发onClick的问题,只有在我第二次按下时才会调用

第一次点击使其聚焦第一次点击触发 onClick

谁能告诉我如何从第一次触发点击

android onclick onclicklistener android-textinputedittext

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

最小日期最大日期在xamarin android中不起作用

我正在使用 xamarin android datepicker 对话框片段。但试图在今天和今天 + 3 天之间启用日期。它不起作用。它甚至不适用于最小日期选项。

public static readonly string TAG = "X:" + typeof (DatePickerFragment).Name.ToUpper();
        Action<DateTime> _dateSelectedHandler = delegate { };

        public void OnDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
        {
            // Note: monthOfYear is a value between 0 and 11, not 1 and 12!
            DateTime selectedDate = new DateTime(year, monthOfYear +1, dayOfMonth);
            Log.Debug(TAG, selectedDate.ToLongDateString());
            _dateSelectedHandler(selectedDate);
        }

        public static DatePickerFragment NewInstance(Action<DateTime> onDateSelected)
        {
            DatePickerFragment frag = new DatePickerFragment();
            frag._dateSelectedHandler = onDateSelected;
            return frag;
        }

        public override …
Run Code Online (Sandbox Code Playgroud)

android android-datepicker xamarin.android datepickerdialog

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