小编Rah*_*hul的帖子

ViewBinding - 不同风味的布局资源

我有一个风格,其中包含与我的main源集中相同的布局资源。这是因为它用特定的风味覆盖了主要的。我在很多地方都这样做过,在我引入ViewBinding. 为准确起见,布局是“包含”在片段中的嵌套布局。

这是结构:

main
 - res 
 - - layout 
 - - - layout_sign_up_details_fields.xml
flavor 
 - res 
 - - layout 
 - - - layout_sign_up_details_fields.xml

Run Code Online (Sandbox Code Playgroud)

til_sudf_first_name在我的主要资源中没有的特定于风味的布局资源中有一个视图,其 ID 是。这是有意的。View通过在运行此构建变体时查看生成的源,我可以看到这是在我的绑定类中“绑定”的。

main
 - res 
 - - layout 
 - - - layout_sign_up_details_fields.xml
flavor 
 - res 
 - - layout 
 - - - layout_sign_up_details_fields.xml

Run Code Online (Sandbox Code Playgroud)

现在实际绑定发生在“基”类中,并使用protected可见性修饰符与子类共享,如下所示:

@NonNull
public final TextInputLayout tilSudfFirstName;
Run Code Online (Sandbox Code Playgroud)

问题是detailsBinding不包含我需要的视图,即使它存在于生成的类中。

此外,另一个奇怪的事情是,即使main布局文件中存在不在特定于风味的布局文件中的视图,它们仍然包含在生成的布局文件中。

我正在尝试做的甚至可能吗?我可用的解决方法是对这个实例使用 kotlin 的综合视图处理,因为我一直在尝试使用推荐的方法

data-binding android android-layout android-flavors android-viewbinding

7
推荐指数
1
解决办法
1487
查看次数

自定义Horizo​​ntalScrollView适配器RecyclerView

我试图创建HorizontalScrollView一个RecyclerView,我有我的适配器FirebaseAdapter与我onCreateViewHolder,onDataChanged和它onBindViewHolder,我想对我的补充什么RecyclerView是这样的图像,类似,用户只能看到3项,并居中放大/更大,有人告诉我,我必须覆盖getItemViewType,但我不知道如何,你能指导如何做到这一点吗?

为了使它像HorizontalScrollView我添加了CustomLinearLayout这样的行为:

LinearLayoutManager layoutManager = 
new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
rv.setLayoutManager(layoutManager);
Run Code Online (Sandbox Code Playgroud)

我希望它显示的是这样的(每个空白矩形是一个项目):

在此输入图像描述

对于那些不理解的人

我已经有一个RecyclerView行为,HorizontalScrollView 我不能使其可定制,以显示它像上面的图像.

android horizontal-scrolling android-layout android-recyclerview

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

DataStore 未收到来自 Flow 的事件

我正在使用 datastore-preferences:1.0.0-alpha01 并且当数据存储值更新时我似乎无法恢复事件。我一直试图在片段和父活动中观察它,结果相同。当我创建 DataStore 的实例并观察值流时,我在声明观察者后立即收到一个事件(注册观察者后似乎很常见)。这将表明流正在运行,并且观察者正在按预期接收事件。然后我在同一个观察者内部更新首选项的值,该观察者从不接收事件。

我使用这篇文章作为参考https://medium.com/scalereal/hello-datastore-bye-sharedpreferences-android-f46c610b81d5,它与我用来比较我的实现的 repo 一起使用。显然,这个是有效的。https://github.com/PatilShreyas/DataStoreExample

数据存储实用程序

class DataStoreUtils(context: Context) {

    companion object {
        private const val TAG = "DataStoreUtils"
    }

    private val dataStore = context.createDataStore(name = Constants.PrefName.APP_PREFS)

    suspend fun setString(prefKey: String, value: String) {
        Log.d(TAG, "Setting $prefKey to $value")
        dataStore.edit { it[preferencesKey<String>(prefKey)] = value }
    }

    suspend fun getString(prefKey: String): String? {
        return dataStore.data.map { it[preferencesKey<String>(prefKey)] ?: return@map null }.first()
    }

    val usernameFlow: Flow<String?> = dataStore.data
        .catch {
            if (it is IOException) {
                it.printStackTrace() …
Run Code Online (Sandbox Code Playgroud)

android android-lifecycle kotlin-flow android-jetpack-datastore

6
推荐指数
0
解决办法
701
查看次数

错误的行号谷歌播放崩溃报告

我有这样的谷歌播放崩溃

java.lang.NullPointerException: 
  at java.util.Objects.requireNonNull (Objects.java:109)
  at f0.k.e.b.b.a.<init> (SourceFile:1)
  at com.activities.galleryscan.ScanBarcodeFromFileActivity$b.g (SourceFile:28)
  at h0.r.o.a.a.d (SourceFile:3)
Run Code Online (Sandbox Code Playgroud)

这里的行号SourceFile:28不正确为什么?

我上传了带有 proguard 签名的App Bundle

根据无需将映射文件上传到 App Bundle 中的控制台

即使行号不正确,为什么?

我也

添加这个

-keepattributes SourceFile,LineNumberTable

-renamesourcefileattribute 源文件

线路输入 proguard-rules.pro

即使行号不正确,为什么?

android proguard

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

有什么办法可以加快Android应用程序的调试速度?

我正在构建 Android 应用程序,但我厌倦了每次设计应用程序时甚至更改字体大小时我都必须等待重新安装有什么方法可以加快这种设计方式吗?另外,如果我每次都必须调试时更改代码,是否有任何方法可以加快此任务的速度?

我的主要问题是,如果我导航到 10 个活动,而更改在 11 个活动中,那么每次我很忙时我都必须重新导航。我无法直接进入第 11 个活动,因为我需要上一个活动的一些值以及另外一件事

something like on-web page we do just refresh that particular page and see changes
Run Code Online (Sandbox Code Playgroud)

##注意:这个问题会对您解决这个问题有很大帮助,请参阅此处

debugging android

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

Fastlane Android Build in flutter 问题

当我使用 Fastlane 为 Flutter 应用程序构建时,APK 是在 android 文件夹外的构建文件夹中生成的。

android构建成功后的消息是

找不到任何新签名的 apk 文件...

生成的路径都是空的。

生成的路径

但是我在路径中的android文件夹之外发现了一个生成的APK

build/app/outputs/apk/release/app-release.apk

生成的 APK 路径会保持不变还是会随着 Flutter 的未来版本而改变?如何解决这个问题?

此外,由于缺乏活动,GitHub 问题也已关闭。参考:github

android fastlane

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

Admob 限制在我的帐户上超过 8 个月

由于无效流量问题,您帐户上的广告投放目前受到限制。随着我们继续监控您的流量,我们会自动审查并更新此限制。现在已经 8 个月了,限制仍然存在,当然,无法联系 AdMob 团队。这一切都始于我为我的一个应用程序运行谷歌广告安装活动时,我获得了非常高的安装量,因此该应用程序的印象和收入很高,然后我的帐户受到了限制。我已暂停广告系列并删除了所有应用程序的所有广告单元 ID,7 天后警告消失,但当我创建新广告单元时,我收到的请求和展示次数只有 10 次和 2 次,限制又回来了。我已经这样做了几次,但它的限制仍然来来去去。我不知道该怎么办了,我需要你的帮助。

private InterstitialAd mInterstitialAd;
//innitiatizing the ads
        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-1137773547201239/7187777199");
        mInterstitialAd.loadAd(new AdRequest.Builder().build());//loading the ads
        
         if (mInterstitialAd.isLoaded()) {

            final ProgressDialog dialog=new ProgressDialog(MainActivity.this);
            dialog.setMessage("Loading...");
            dialog.setCancelable(false);
            dialog.setInverseBackgroundForced(false);
            dialog.show();
            Handler handler = new Handler();
            Runnable r = new Runnable() {
                public void run() {
                    dialog.dismiss();
                    mInterstitialAd.show();
                }
            };
            handler.postDelayed(r, 2000);

        }
         mInterstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {
                // Code to be executed when an ad finishes loading.
            }

            @Override
            public …
Run Code Online (Sandbox Code Playgroud)

java android admob android-studio

5
推荐指数
0
解决办法
1006
查看次数

从一个 Airflow DAG 返回值到另一个

我的 DAG(我们称之为 DAG_A)使用trigger_dagrun操作符启动另一个 DAG (DAG_B) 。DAG_B 的任务使用 XCOM,我想在完成后从 DAG_B 运行的任务之一(正是我开始的任务)中获取 XCOM 值。

使用 XCOM 不是硬性要求 - 基本上 Airflow 本身提供的任何(合理的)机制都可以工作。如果需要,我可以更改 DAG_B。

找不到此类案例的任何示例,因此感谢您的帮助。

计划 B 是让 DAG_B 将 XCOM 值与一些运行 ID 一起保存到一些持久性存储(如 DB 或文件)中,DAG_A 将从那里获取它。但如果有一些内置机制可用,我想避免这种复杂化。

python airflow apache-airflow-xcom

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

Android Webrtc 将流更改为 STREAM_MUSIC

我已经创建了从一台设备到另一台设备的 WebRTC 会话,该设备应该能够控制音乐流的音量,但 WebRTC 最初设计用于传输 voice_call,因此使用 voice_call 通道并使用通话音量控制对于非通话应用程序。

我尝试将 WebRTC 源WebRtcAudioTrack中的 STREAM_VOICE_CALL 更改为 STREAM_MUSIC以使用流音乐音量,但唯一的变化是 Android 将其检测为音乐,但音量随通话音量而变化。

android audio-streaming webrtc webrtc-android

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

嵌套在垂直 RecyclerView 中的垂直 RecyclerView

我花了几个小时/几天来阅读这个主题,但仍然找不到有用的东西。我试图RecyclerView在另一个垂直滚动的行中放置一个固定高度的垂直滚动RecyclerView

大部分建议都是“将垂直滚动RecyclerView放入另一个垂直滚动中是一种犯罪行为RecyclerView”......但我不明白为什么这如此糟糕。

事实上,行为几乎与 StackOverflow 上的许多页面完全相同(例如,这个……实际上这个问题,至少在移动设备上查看时),其中代码部分是固定的(或最大) 高度和垂直滚动,并且包含在本身垂直滚动的页面中。发生的情况是,当焦点在代码部分时,滚动发生在该部分内,当它到达该部分滚动范围的上/下端时,则滚动发生在外页内。这是很自然的,不是邪恶的。

这是我的 recycler_view_row_outer.xml(外层中的一行RecyclerView):

<com.google.android.material.card.MaterialCardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    style="@style/MyCardView"
    app:cardElevation="4dp"
    app:strokeColor="?attr/myCardBorderColor"
    app:strokeWidth="0.7dp"
    card_view:cardCornerRadius="8dp" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            style="@style/MyTextView.Section"
            android:id="@+id/list_title" />

        <LinearLayout
            style="@style/MyLinearLayoutContainer"
            android:id="@+id/list_container"
            android:layout_below="@+id/list_title" >
        </LinearLayout>

    </RelativeLayout>

</com.google.android.material.card.MaterialCardView>
Run Code Online (Sandbox Code Playgroud)

这是我的recycler_view_row_inner.xml(内部的一行RecyclerView):

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/my_constraint_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/list_container" >

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_view_inner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbarStyle="outsideOverlay"
        android:scrollbars="vertical"
        app:layout_constrainedHeight="true"
        app:layout_constraintBottom_toBottomOf="@+id/my_constraint_layout"
        app:layout_constraintEnd_toEndOf="@+id/my_constraint_layout"
        app:layout_constraintHeight_max="750dp"
        app:layout_constraintHeight_min="0dp"
        app:layout_constraintStart_toStartOf="@+id/my_constraint_layout"
        app:layout_constraintTop_toTopOf="@+id/my_constraint_layout" >
    </androidx.recyclerview.widget.RecyclerView> …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

4
推荐指数
2
解决办法
401
查看次数