RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-434550

faritowich's questions

Martin Hope
faritowich
Asked: 2024-11-20 16:01:38 +0000 UTC

如果一个类将另一个类作为构造函数,在 Hilt 中是否可以提供两个具有不同组件的类?

  • 5

大家好。请告诉我,Component如果其中一个类接受另一个类作为构造函数,Hilt 是否可以提供两个具有不同类型的类?如果不可能,那么我将面临一个依赖项拉动另一个依赖项的问题,然后我将不得不将一堆模块从 更改ViewModelComponent为SingletonComponent.

一个模块将提供单例,因为深层链接的处理不依赖于任何类的生命周期:

@Module
@InstallIn(SingletonComponent::class)
object DeeplinkModule {

    @Provides
    @IntoSet
    fun provideDeeplinkProcessor (сardReissueRepository: CardReissueRepository): DeeplinkProcessorV2 = MyDeeplinkProcessor(сardReissueRepository) 
}

另一个模块将为视图模型提供对象,因此我设置了 ViewModelComponent:

@Module
@InstallIn(ViewModelComponent::class)
object ViewModelModule {

    @Provides
    fun provideCardReissueRepository (/* Много зависимостей */): CardReissueRepository = CardReissueRepositoryImpl(/* Много зависимостей */)
}

CardReissueRepository将很多东西放入构造函数中,如果你创建了它SingletonComponent,那么它的所有依赖项也都必须创建SingletonComponent。或不?

android
  • 1 个回答
  • 34 Views
Martin Hope
faritowich
Asked: 2024-09-08 18:56:55 +0000 UTC

热流和冷流有什么区别?

  • 6

请帮我理解冷流和热流的区别🥲

文档说。​the code inside a flow builder does not run until the flow is collected好的,这很容易检查,因为我们可以使用创建一个流程flow { },并且内部的代码{ }在我们调用之前不会真正执行collect()。

他们在Android 文档中写道: Unlike a cold flow built using the flow builder, a StateFlow is hot: collecting from the flow doesn't trigger any producer code. A StateFlow is always active and in memory... 我不明白,这些流的活动是什么?

  1. 它可能有什么样的生产者代码StateFlow?常规流有一个 builder flow {},而它们StateFlow只是有一个函数StateFlow<T>(),其参数传递初始值。如果它只是一个函数参数,那么它是什么样的生产者代码?
  2. 他们这样写StateFlow is always active,但在这段测试代码中,collect()代码不会在没有调用的情况下执行,就像常规flow { }.活动可能还有其他含义,但我不明白到底是什么。
fun main() = runBlocking {
    val stateFlow = MutableStateFlow(0)
    stateFlow.onEach {
        println(it)
    }.collect() // без collect() код внутри onEach не выполняется
    stateFlow.emit(2)
}
kotlin
  • 1 个回答
  • 59 Views
Martin Hope
faritowich
Asked: 2022-08-24 17:56:36 +0000 UTC

通过邮件发送时使用 HTML 标记格式化文本

  • 1

共享文件时,我会有意发送短信。文本消息中有应该转换文本的 html 标签,但对我来说,它们仍以其原始形式保留在信中: 在此处输入图像描述

我添加了 mime 类型,但它仍然没有格式化。意图本身:

        val sendIntent: Intent = Intent().apply {
            action = Intent.ACTION_SEND_MULTIPLE
            putParcelableArrayListExtra(
                Intent.EXTRA_STREAM, ArrayList(uris)
            )
            subject?.let {
                putExtra(Intent.EXTRA_SUBJECT, subject)
            }
            body?.let {
                putExtra(Intent.EXTRA_TEXT, body)
            }
            addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
            type = "text/html"
        }
        startActivity(Intent.createChooser(sendIntent, getString(title)))

我也尝试了这样一个额外的putExtra(Intent.EXTRA_HTML_TEXT, body),但是邮件正文中根本没有文本。如果你这样做putExtra(Intent.EXTRA_TEXT, Html.fromHtml(body)),那么 HTML 标签会从信中消失,但不会发生格式设置,只剩下一个统一的文本

android
  • 1 个回答
  • 43 Views
Martin Hope
faritowich
Asked: 2022-07-17 19:14:03 +0000 UTC

在 WebView 中将文档上传到网站

  • 0

我有一个带有一个全屏 web 视图的简单应用程序。现在,当我单击某些网站上的按钮(上传文件时的 Google Docs,将文件附加到信件时的邮件等)建议选择下载文件的应用程序(图库、资源管理器等)时,什么都没有发生,例如这里:

在此处输入图像描述

我想让它们像在移动浏览器中一样工作,当您单击任何网站上的附加按钮时,显然会触发 Inplicit Intent,提示您选择适当的应用程序。

我从我发现的那些中大量指定了一堆 Permissons,但没有任何效果:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CAMERA"/>

请告诉我,如何实现这一点,我什至不知道用哪种方式挖掘,在哪里以及如何规定它。

该项目由两个文件组成:

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)


        if (savedInstanceState != null) {
            // Restore the previous URL and history stack
            binding.webView.restoreState(savedInstanceState);
        }

        val myWebViewClient = MyWebViewClient(this)
        binding.webView.settings.javaScriptEnabled = true

        val currentUrl = myWebViewClient.sharedPref.getString(URL, "https://www.google.ru")

        Log.d(tag, "sharedPref value: ${myWebViewClient.sharedPref.getString(URL, "")}")
        if (currentUrl != null) {
            binding.webView.loadUrl(currentUrl)
        }
        binding.webView.webViewClient = myWebViewClient
    }

    override fun onBackPressed() {
        binding.webView.apply {
            if (canGoBack()) {
                goBack()
            } else {
                onBackPressed()
            }
        }
    }
}

MyWebViewClient 类:

val tag = "CUSTOMTAG"

val SHARED_PREFS = "sharedPrefs"
val URL = "URL"

class MyWebViewClient(val context: Context) : WebViewClient() {

    val sharedPref = context.getSharedPreferences(
        SHARED_PREFS,
        AppCompatActivity.MODE_PRIVATE
    )


    override fun shouldOverrideUrlLoading(view: WebView?, url: String): Boolean {
        view?.let {
            it.loadUrl(url)
        }
        return false
    }

    override fun onPageFinished(view: WebView?, url: String?) {
        super.onPageFinished(view, url)

        with(sharedPref.edit()) {
            putString(URL, url)
            apply()
        }

        if (url != null) {
            sharedPref.getString(URL, "")?.let { Log.d(tag, "sharedPref: $it") }
        }
    }
}
android
  • 1 个回答
  • 10 Views
Martin Hope
faritowich
Asked: 2022-08-30 00:58:03 +0000 UTC

有助于提高算法的效率

  • 0

我在 Codewars 中练习解决问题。坚持以下内容:有一个数字,例如,42。它的除数是数字1, 2, 3, 6, 7, 14, 21, 42。所有除数的平方和为2500。而2500又是整数 的平方50。

因此,我们将一系列数字从m到提供给函数的输入n。有必要编写一个算法,在从m到的区间内n,找到所有满足上述条件的整数 - 它们的除数的平方和本身必须是整数的平方。

该函数返回一个数组数组——例如,在1到250的范围内,三个数字满足条件,输出将是一个数组[[1, 1], [42, 2500], [246, 84100]],其中第一个数字是满足条件的数字,第二个是其除数的平方和。

如果有的话,问题本身:https ://www.codewars.com/kata/55aa075506463dac6600010d

我写了一个完全可行的算法。但是,如果 Codewars 认为算法效率低下,它有时会拒绝解决方案。为了提高算法的效率,我对它做了两处修改:

  1. 该数字没有大于该数字一半的整数除数,因此for当我们通过该数字的一半时退出循环
  2. 如果这个数是奇数,那么它的所有除数也是奇数,所以当在 for 循环中检查奇数时,我们移动到第 2 步:1,3,5等等。

无论如何,我的 Codewars 算法拒绝。你能告诉我如何提高这个算法的速度吗?也许我选择了错误的解决方案?第二个问题源于我的优化。我塞了很多不同的奇偶校验,检查数字是否大于被检查数字的一半。它值多少钱,也许这些检查只会减慢代码的速度,并且不会使程序免于不必要的计算?

编码:

fun listSquared(m: Long, n: Long): String {
    var finalArray = mutableListOf<List<Long>>()
    var sum: Long
            for (i in m..n){
        sum = 0
            
        if (i % 2 == 0L){
            for (j in 1..i){
                if (i % j == 0L){
                    sum += j.toDouble().pow(2).toLong()
                    if (i/j < 2) break // у числа не бывает делителя больше, чем половина этого числа
                }
            }
        } else {
            for (j in 1..i step 2){ // если число нечетное, то все его делители тоже нечетные
                if (i % j == 0L){
                    sum += j.toDouble().pow(2).toLong()
                    if (i/j < 2) break
                }
            }
        }

        if ((sqrt(sum.toDouble()) % 1.0) == 0.0){
            finalArray.add(listOf(i, sum))
        }
    }
    return finalArray.toString()
}
алгоритм
  • 1 个回答
  • 10 Views
Martin Hope
faritowich
Asked: 2022-07-20 15:56:18 +0000 UTC

为什么二进制搜索算法不起作用

  • 0

在这段代码中,我试图实现一个递归二进制搜索算法。对于我正在测试此算法的数组arr,它不起作用。为了测试,在每个递归循环之后,我将新的结果数组打印到控制台。对于指定的数组,我们在其中查找 number 6.6,输出为:

1.1 1.3 1.6 3.1 4.1 4.9 5.1 5.3 5.5 6.6 6.9 9.4 9.7 11.1 13.8 14.1 19.5 23.6 55.1 99.1
Середина массива: 6.9
Новый массив:  1.1 1.3 1.6 3.1 4.1 4.9 5.1 5.3 5.5 6.6
Середина массива: 4.9
Новый массив:  5.1 5.3 5.5 6.6
Середина массива: 5.5
Новый массив:  6.6
false

根据 false 判断,它没有找到所需的元素6.6,尽管事实上在最后一次迭代中创建了一个包含一个元素 {6.6} 的新数组并且必须再次调用该方法find,它必须将其标识为数组,if(arr[arr.length/2] == num)检查后必须返回 true。但是该方法似乎没有被调用,导致该方法退出递归循环if并返回false。为什么会这样?

此外,如果这个方法的输入立即推送一个包含一个所需元素的数组:double[] arr = {6.6};,那么二分查找返回 true,即找到了这个元素,这让我更加困惑。我也想澄清一下原因。

我的代码:

import java.util.Arrays;
import java.util.Random;

public class Main{
    public static void main(String[] args) {
        double[] arr = {1.3, 4.1, 5.5, 9.4, 19.5, 3.1, 5.1, 13.8, 11.1, 4.9, 5.3 ,9.7 , 1.1, 6.9 ,99.1,1.6,55.1,23.6,14.1,6.6};
        //double[] arr = {6.6};
        Arrays.sort(arr);
        for(double i: arr){
            System.out.print(" "+ i);
        }
        System.out.println();
        System.out.println(BinarySearch.find(6.6, arr));

    }
}

class BinarySearch{
    public static boolean find (double num, double[] arr){

        if(arr[arr.length/2] == num){
            return true;
        }
        else if (arr[arr.length/2] < num){
            double[] newHigherArr = Arrays.copyOfRange(arr, (arr.length/2)+1, arr.length);
            
            // Выводы для тестов: начало
            System.out.println("Середина массива: " + arr[arr.length/2]);
            System.out.print("Новый массив: ");
            for(double i: newHigherArr){
                System.out.print(" " + i);
            }
            System.out.println();
            // Выводы для тестов: конец
            
            
            find(num, newHigherArr);
            
        } else if (arr[arr.length/2] > num){
            double[] newLowerArr = Arrays.copyOfRange(arr, 0, arr.length/2);
            
            // Выводы для тестов: начало
            System.out.println("Середина массива: " + arr[arr.length/2]);
            System.out.print("Новый массив: ");
            for(double i: newLowerArr){
                System.out.print(" " + i);
            }
            System.out.println();
            // Выводы для тестов: конец
            
            find(num, newLowerArr);
        }
        return false;
    }
}
java
  • 1 个回答
  • 10 Views
Martin Hope
faritowich
Asked: 2022-07-07 20:22:16 +0000 UTC

生产者-消费者返回值错误

  • 1

在这段代码中,我试图实现生产者-消费者模式。问题出现在预期之外 - 当您运行此代码时,方法中出现错误get():

此方法必须返回 int 类型的结果

我怀疑这是因为它return隐藏在循环中,而不是因为它会被调用?那么如何修复此代码,以便两个线程交替服务并返回值n?

public class ProdCons2 {
        public static void main(String[] args) {
            Q q = new Q();
            new Producer(q);
            new Consumer(q);
        }
    }
    
    class Q{
        int n;
        boolean valueSet = false;
        
        synchronized int get(){
            while(!valueSet){
                try{
                    wait();
                } catch (InterruptedException e){}
                System.out.println("Получено: " + n);
                valueSet = false;
                notify();
                return n;
            }
        }
        
        synchronized void put(int n){
            while (valueSet){
                try{
                    wait();
                } catch (InterruptedException e){}
                this.n = n;
                System.out.println("Отправлено: " + n);
                valueSet = true;
                notify();
            }
            
            }
    }
    
    class Producer implements Runnable{
        Q q;
        static int i = 0;
        
        Producer(Q q){
            this.q = q;
            new Thread(this, "Поставщик").start();
        }
        
        public void run(){
            
            while(i<200){
                q.put(i++);
                }
        }
    }
    
    class Consumer implements Runnable{
        Q q;
        
        Consumer(Q q){
            this.q=q;
            new Thread(this, "Потребитель").start();
            }
        
        public void run(){
            {
                while(Producer.i<200){
                q.get();
                }
            }
        }
    }
java
  • 1 个回答
  • 10 Views
Martin Hope
faritowich
Asked: 2022-07-01 21:12:52 +0000 UTC

如何在没有管理员权限的情况下安装 JVM?

  • 0

大家好。我想在我的工作计算机上编写和运行 Java 代码,但由于缺乏管理员权限,我无法安装 JVM。我安装了开发环境,因为。如果未安装在 Program Files 中,则可以绕过对管理面板的需求,但我无法在没有管理面板的情况下安装 JVM。告诉我,是否可以在没有管理员权限的情况下运行 JVM?也许有些环境带有内置的 JVM 或可移植版本?

java
  • 1 个回答
  • 10 Views
Martin Hope
faritowich
Asked: 2022-06-06 14:28:16 +0000 UTC

在无限循环中将变量添加到 List 时出现 Infinite InputMismatchException 消息

  • 1

大家好。我正在学习java中的异常处理。有ArrayList,它在一个无限循环中接受来自用户的数字,这些数字被添加到ArrayList. 我想捕获一个异常,以便在输入非int值时,循环不会停止,而只是显示一条消息"Only ints!",之后用户可以继续输入数字。但实际上,当你输入 not 时int,就会开始无休止的输出消息。我认为continue这个问题会得到解决,但由于某种原因它不起作用。请告诉我为什么以及如何解决它?

public class Exceptions3 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        List<Integer> list = new ArrayList<>();

        while (true){
            try{
                list.add(scanner.nextInt());
            }
            catch (InputMismatchException e){
                System.out.println("Only ints!");
                continue;
            }
        }
    }
}
java
  • 1 个回答
  • 10 Views
Martin Hope
faritowich
Asked: 2022-05-02 19:28:02 +0000 UTC

为什么 UI 文本中的字体大小没有变化

  • -1

我正在为游戏制作一个线性时间栏,我添加了一个 UI 文本元素 ( BonusTime),但由于某种原因,它对更改字体大小完全没有反应。虽然我把它放在 5 上,但至少放在 200 上 - 大小是一样的。你能告诉我为什么会发生这种情况以及如何解决它吗?

unity3d
  • 2 个回答
  • 10 Views
Martin Hope
faritowich
Asked: 2022-03-19 16:12:30 +0000 UTC

尝试声明变量时出现错误 CS0236

  • 0

在创建的类array中,由GameObject. 然后,当尝试创建变量blocksAmount时,它以红色突出显示并引发错误:

CS0236 : A field initializer cannot reference the nonstatic field, method, or property 'Ball.initialBlocksAmount'

下面是代码。

public class Ball : MonoBehaviour
{

    [SerializeField] GameObject[] initialBlocksAmount = UnityEngine.GameObject.FindGameObjectsWithTag("block");
    
    int blocksAmount = initialBlocksAmount.Length;

请帮助我理解错误。

c#
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5