小编Iba*_*ola的帖子

为什么Android中需要viewmodel工厂?

我们一直在讨论这个问题,但是我们不知道创建视图模型工厂来创建视图模型而不是直接实例化视图模型的原因。创建仅创建视图模型的工厂有什么好处?

我只是举了一个简单的示例,说明我没有工厂如何做到这一点

这是kodein模块:

val heroesRepositoryModel = Kodein {
    bind<HeroesRepository>() with singleton {
        HeroesRepository()
    }

    bind<ApiDataSource>() with singleton {
        DataModule.create()
    }

    bind<MainViewModel>() with provider {
        MainViewModel()
    }
}
Run Code Online (Sandbox Code Playgroud)

我不使用工厂实例化viewmodel的Activity部分

class MainActivity : AppCompatActivity() {
    private lateinit var heroesAdapter: HeroAdapter
    private lateinit var viewModel: MainViewModel
    private val heroesList = mutableListOf<Heroes.MapHero>()
    private var page = 0
    private var progressBarUpdated = false

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        viewModel = ViewModelProviders.of(this)
                .get(MainViewModel::class.java)
        initAdapter()
        initObserver()
        findHeroes()
    }
Run Code Online (Sandbox Code Playgroud)

我直接实例化用例的ViewModel,而无需在构造函数中使用它

class MainViewModel : ViewModel(), CoroutineScope { …
Run Code Online (Sandbox Code Playgroud)

android mvvm viewmodel kotlin kodein

14
推荐指数
4
解决办法
4107
查看次数

无法解决SonarQube错误"让这条线从第3列开始"

我在xml(布局,字符串,drawables ......)中有很多这样的错误.我试图将每个列的空间更改为3,在我有此错误的行中放置3个选项卡,但我仍然在SonarQube中出现此错误.我怎么解决这个问题?

我在这里举一个示例,我收到此错误:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="64.42dp"
    android:height="68.76dp"
    android:viewportWidth="64.42"
    android:viewportHeight="68.76">
    <path
        android:fillColor="#141412"
        android:fillType="evenOdd"
        android:pathData="M38.62,43.24c0.69,0.1,1.2,0.75,2.01,0.86c1.33,0.18,2.57-0.02,3.7-0.77 c1.98-1.33,3.56-3.23,3.66-5.65c0.01-0.34-0.04-1.42-0.04-1.69c0-1.01-0.57-1.32-0.75-2.3c-0.3-1.61,1.23-0.8,1.42,0.33 c-0.13-0.77,0.69-4.28,2.59-2.64c1.63,1.4,0.07,2.82-0.24,4.24c-0.14,0.63-0.45,1.84-0.54,2.48c0,0,0,0-0.01,0 c-0.35,2.33-1.41,4.8-2.95,6.34c-1.35,1.35-3.05,2.76-5.02,2.92c-1.15,0.1-3.25-0.08-4.27-0.66l0.21,0.42 C36.59,47.68,36.57,42.95,38.62,43.24z" />
    <path
        android:fillColor="#C31924"
        android:fillType="evenOdd"
        android:pathData="M61.69,43.35c0.82-2.66,2.14-11.44,2.28-12.49c0.13-1.05,0.42-2.32,0.45-3.83 c0.03-1.51-1.36-3.05-3.35-3.04c-0.36,0-16.15,0.06-16.92,0.07c-0.52,0-0.66-0.27-0.63-0.56c0.27-2.7,0.8-6.13,0.88-6.58 c0.08-0.41,0.16-0.8,0.17-1c0.02-0.2,0.06-0.49-0.42-0.62c-0.49-0.12-4.1-0.59-21.86-0.5C5.2,14.89,0.91,15.4,0.43,15.53 c-0.49,0.13-0.44,0.42-0.42,0.62c0.01,0.2,0.13,0.7,0.18,0.99c0.07,0.33,0.71,3.87,0.96,6.58c0.68,7.77,1.49,39.99,1.6,41.09 c0.08,0.77,0.31,2.1,1.91,3.03c1.6,0.94,16.85,0.92,17.9,0.91c1.05,0.01,16.3-0.13,17.89-1.09c1.59-0.96,1.81-2.28,1.88-3.05 c0.04-0.41,0.14-5.19,0.15-5.43c0.02-0.25,0.17-0.69,0.63-0.75c0.82-0.1,1.64-0.2,2.9-0.46c3.83-0.79,6.07-2.06,8.61-3.89 C59.28,50.69,60.88,46.02,61.69,43.35 M56.84,43.88c-1.03,2.45-3.81,7.25-8.9,9.07c-1.94,0.7-4.31,1.21-4.71,1.21 c-0.56,0.01-0.63-0.04-0.63-0.39c0-0.36,0.17-9.65,0.21-10.87c0.22-6.95,2.25-12.22,4.9-13.52c0.57-0.28,1.45-0.75,3.89-0.76 c2.95-0.02,6.98-0.03,7.36-0.04c0.38,0,0.66,0,0.66,0.31c0.01,0.44-0.61,4.63-0.67,5.04C58.87,34.35,57.85,41.49,56.84,43.88" />
    <path
        android:fillColor="#141412"
        android:pathData="M24.38,32.2c0,0.97,0.53,1.76,1.16,1.75c0.64,0,1.15-0.79,1.14-1.77c0-0.97-0.53-1.75-1.16-1.75 C24.89,30.44,24.37,31.23,24.38,32.2z" />
    <path
        android:fillColor="#141412"
        android:pathData="M17.59,32.23c0,0.97,0.53,1.76,1.16,1.75c0.64,0,1.15-0.79,1.15-1.77c0-0.97-0.53-1.75-1.16-1.75 C18.1,30.47,17.59,31.26,17.59,32.23z" />
    <path
        android:fillColor="#141412"
        android:pathData="M17.88,35.89c0.01,2.3,1.88,4.15,4.17,4.13c2.29-0.01,4.15-1.88,4.13-4.18" />
    <path
        android:fillColor="#D38690"
        android:fillType="evenOdd"
        android:pathData="M22.61,1.28c0.61-0.69,1.27-1.36,2.61-1.26c1.32,0.09,2.12,0.97,2.44,1.94 c0.41,1.25-0.12,2.55-0.74,3.34c-1.26,1.59-3.27,2.66-4.27,4.49c-0.54-0.68-1.07-1.39-1.74-2.01c-0.63-0.58-1.34-1.13-1.98-1.77 c-0.61-0.6-1.19-1.35-1.39-2.35c-0.23-1.17,0.11-2.21,0.74-2.84c0.4-0.4,0.98-0.75,1.72-0.81C21.33-0.1,22.05,0.55,22.61,1.28z" />
</vector>
Run Code Online (Sandbox Code Playgroud)

android sonarqube

11
推荐指数
1
解决办法
751
查看次数

如何以编程方式调整ImageView的大小

我想在触摸时调整ImageView的大小.这将是完美的调整大小,就像你在谷歌地图或移动浏览器中进行放大,但如果只是触摸它我可以调整大小就足够了.那可能吗?

android android-imageview

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

Android Intent:-Use Intent从活动传递类对象

可能重复:
如何使用Intents将对象从一个Android Activity发送到另一个?

当一个Activity调用另一个Activity时,我想将一个类对象从一个Activity传递给另一个.我试图用Intent.putExtra(name, value)它制作,但后来我没有Intent.getExtra(name)方法.有许多类似的方法getStringExtra(name),getDataExtra(name)依此类推,但我在其中放入的值putExtra是一个类对象,它具有很多不同的值,如String,Data和int.如何通过该课程?

android android-intent

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

无法找到System.Net.Webclient无法正常工作的'WebClient'

我正在尝试使用WebClient,但它给了我错误,所以我检查了几个论坛(包括这个)和他们在哪里告诉放

在文件的顶部:

using System.Net 
Run Code Online (Sandbox Code Playgroud)

在我想要使用WebClient之后:

 WebClient webClient = new WebClient();
 webClient.DownloadFile ("http://mysite.com/myfile.txt", @"c:\myfile.txt");
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

找不到类型或命名空间名称'WebClient'(您是否缺少using指令或程序集引用?)

在其他论坛中,我刚才写的代码似乎是解决方案但不适合我.

c# visual-studio-2013 windows-8.1

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

Mockito when 子句在 kotlin 中不起作用

我正在尝试在 kotlin 中使用 mockito。我创建了以下测试:

class HeroesDataSourceTest {

    @Mock
    lateinit var heroesRepository: HeroesRepository
    @Mock
    lateinit var params: PageKeyedDataSource.LoadInitialParams<Int>
    @Mock
    lateinit var callback: PageKeyedDataSource.LoadInitialCallback<Int, Heroes.Hero>

    val hero = Heroes.Hero(1, "superman", "holasuperman", 1, null, null)
    val results = Arrays.asList(hero)
    val data = Heroes.Data(results)
    val dataResult = Heroes.DataResult(data)

    val compositeDisposable = CompositeDisposable()

    lateinit var heroesDataSource: HeroesDataSource
    private val heroesPublishSubject = PublishSubject.create<Heroes.DataResult>()

    @Before
    fun initTest(){
        MockitoAnnotations.initMocks(this)

    }

    @Test
    fun testLoadInitialSuccess(){
        `when`(heroesRepository.getHeroes(ArgumentMatchers.anyInt())).thenReturn(heroesPublishSubject.singleOrError())
        heroesDataSource = HeroesDataSource(heroesRepository, compositeDisposable)
        val testObserver = TestObserver<Heroes.DataResult>()
        heroesDataSource.loadInitial(params, callback)
        heroesPublishSubject.onNext(dataResult)
        testObserver.assertComplete()
    }

} …
Run Code Online (Sandbox Code Playgroud)

mockito kotlin

6
推荐指数
2
解决办法
5613
查看次数

Media.getduration返回-1

我试图获取音频文件的持续时间.为此,我使用以下代码:

$.fntReproducir=function(){
    //obtenemos una instancia del elemento que contiene la info. de cancion a reproducir
    var $objContenedorCancion=$('#olCanciones').children().eq(iCancionActual);
    //obtenemos la ruta del archivo que se va a reproducir y se lo asignamos
    //al source del audio player de HTML5
    objReproductor = new Media($objContenedorCancion.attr('rel'), stopAudio, null);
    //var timerDur = setInterval(GetCurrPosition, 1000);
    //desmarcamos cualquier cancion en la lista (si es que estuviese marcada alguna)
    $('#olCanciones li').removeClass('clsSeleccionado');
    //marcamos en la lista la cancion que vamos a reproducir
    $objContenedorCancion.addClass('clsSeleccionado');
    meState = myMediaState.play

    //reproducir la cancion …
Run Code Online (Sandbox Code Playgroud)

cordova phonegap-build

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

由于您的“宏”安全设置,无法找到或已禁用该宏

我收到标题中出现的错误,并且我已经检查了安全设置,启用了所有功能,并且加载项已签名。我将屏幕截图显示了如何选择。如果我启用了所有功能,为什么它会带来安全问题?

在此处输入图片说明

在此处输入图片说明

我正在使用Windows 8和Office365。不起作用的加载项是PowerPoint加载项。我也尝试了一些出现在此线程中的解决方案,但没有一个对我有用:http : //social.technet.microsoft.com/Forums/office/en-US/0b385af0-9856-4cfb-bc48-3369c3ce2ace/when-opening由于您的宏安全性而无法找到或发现宏字无法正确显示的问题?forum = officeitprevious

powerpoint add-in

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

i18n无法使用本地化网址

我正在尝试将本地化添加到我的网站.我安装i18n,用西班牙语和英语创建2个本地化json文件,然后在app.js文件中添加配置.app.js文件是这样的:

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var i18n = require("i18n");
var session = require('express-session');
var RedisStore = require('connect-redis')(session);
var request = require('request');
var flash = require('express-flash');
var winston = require('winston');

winston.add(winston.transports.File, { name: 'app-info', maxFiles: 3, filename: 'logs/app-info.log', level: 'info' });
winston.add(winston.transports.File, { name: 'app-error', maxFiles: 3, filename: 'logs/app-error.log', level: 'error' });

require('dotenv').config();
var app_port   = process.env.APP_PORT;


var fs = require('fs'); …
Run Code Online (Sandbox Code Playgroud)

internationalization node.js

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

在 android.os.Looper 中使用 LiveData 方法 getMainLooper 进行单元测试未模拟

在尝试进行单元测试时,我无法让 liveData.postValue 工作。我一直在谷歌检查解决方案,这是我现在的代码。

public class ProjectListViewModelTest {

    GetProjectList getProjectList = Mockito.mock(GetProjectList.class);
    ProjectModel.Project project = new ProjectModel.Project("testing",
            "this is a test",
            "https://logo.jpg",
            new ProjectModel.Company("cat"),
            "20150404",
            "active");
    List<ProjectModel.Project> projects = Arrays.asList(project);
    ProjectModel.ProjectList projectsList = new ProjectModel.ProjectList(projects);

    ProjectsListViewModel projectsListViewModel;

    private PublishSubject<ProjectModel.ProjectList> projectsListPublishSubject = PublishSubject.create();

    @Rule public InstantTaskExecutorRule instantExecutorRule = new InstantTaskExecutorRule();

    @BeforeClass
    public static void setUpRxSchedulers() {
        Scheduler immediate = new Scheduler() {
            @Override
            public Disposable scheduleDirect(@NonNull Runnable run, long delay, @NonNull TimeUnit unit) {
                return super.scheduleDirect(run, 0, unit);
            }

            @Override
            public Scheduler.Worker …
Run Code Online (Sandbox Code Playgroud)

junit android unit-testing android-looper android-livedata

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