小编sty*_*972的帖子

改造和集中错误处理

对服务器的每个请求都可以返回error_code.当我使用AsyncTask时,我想在一个地方处理这些错误我有这样的BaseAsyncTask

public abstract class BaseAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {

    protected Context context;
    private ProgressDialog progressDialog;
    private Result result;

    protected BaseAsyncTask(Context context, ProgressDialog progressDialog) {
        this.context = context;
        this.progressDialog = progressDialog;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected void onPostExecute(Result result) {
        super.onPostExecute(result);
        HttpResponse<ErrorResponse> response = (HttpResponse<ErrorResponse>) result;
     if(response.getData().getErrorCode() != -1) {
                handleErrors(response.getData());
        }else 
            onResult(result);

    }

    private void handleErrors(ErrorResponse errorResponse) {
    }
     public abstract void onResult(Result result);
    }
Run Code Online (Sandbox Code Playgroud)

但是,使用改造每个请求都有其错误处理回调:

                    git.getFeed(user,new Callback<gitmodel>() {
                    @Override …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask retrofit

18
推荐指数
3
解决办法
8933
查看次数

单元测试Swift 2.0,@ stestable导入和方案定位问题

我最近将我的应用程序和单元测试转换为Swift 2.0.我@testable import AppName在我的Tests.swift文件中使用.

由于无法在多个目标中执行子类的问题(请参阅此处的问题),我的类EntityName只能是目标成员资格AppName,而不是AppNameTests.

问题是,一旦我切换到AppNameTests模式运行单元测试,模块中的代码AppName无法找到类EntityName和我

使用未声明的类型'EntityName'

AppName如果在AppNameTests没有该实体类不是该方案的成员的情况下从该方案运行测试,我如何进行编译?

unit-testing realm ios swift swift2

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

如何确定意图持有的捆绑中额外的类型?

我试图BroadcastReceiver通过它传递任意数据Intent.

所以我可能会做类似以下的事情

intent.putExtra("Some boolean", false);
intent.putExtra("Some char", 'a');
intent.putExtra("Some String", "But don't know what it will be");
intent.putExtra("Some long", 15134234124125);
Run Code Online (Sandbox Code Playgroud)

然后将其传递给 BroadcastReceiver

我希望迭代Intent.getExtras()类似的东西keySet(),但我也希望能够获得密钥的价值,而无需硬编码调用方法,如.getStringExtra(),或.getBooleanExtra().

一个人怎么做到这一点?

android broadcastreceiver android-intent

13
推荐指数
1
解决办法
5244
查看次数

为什么不能将SQLite ROWID用作主键?

这不会执行:

create table TestTable (name text, age integer, primary key (ROWID))
Run Code Online (Sandbox Code Playgroud)

错误消息是:

11-23 11:05:05.298:ERROR/Database(31335):在准备'create table TestTable(name text,age integer,primary key(ROWID))'时,0x2ab378上的失败1(表TestTable没有名为ROWID的列).

但是,在创建TestTable之后,这准备并执行得很好:

create table TestTable (name text, age integer);

insert into TestTable (name, age) values ('Styler', 27);

select * from TestTable where ROWID=1;
Run Code Online (Sandbox Code Playgroud)

我可能会认为ROWID这是一个需要自动增量主键和外键的解决方案,它们永远不会被用作应用层上的数据.由于默认情况下ROWID隐藏了select结果集,因此将它与主键相关联同时使其与应用程序逻辑隐藏在一起会很不错. OracleBlog:ROWNUM和ROWID说这是不可能的,也是不可取的,但除此之外没有提供太多解释.

所以,既然'这可能'的答案绝对不是/不可取的,那么问题或多或少是'为什么不'?

sql sqlite primary-key

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

从命令行下载Android支持库

如何通过命令行下载Android支持库?

例如:

echo y | android update sdk --no-ui --filter "android-19"
Run Code Online (Sandbox Code Playgroud)

android-sdk-tools android-support-library

11
推荐指数
2
解决办法
7513
查看次数

ActiveRecord迁移不填充Postgres物化视图

我有一个MATERIALIZED VIEW通过迁移创建的.

class MyView < ActiveRecord::Migration
  def up
    ActiveRecord::Base.connection.execute <<-SQL
    CREATE MATERIALIZED VIEW my_view AS (
      SELECT DISTINCT something, something_else, other.thing as real_thing, thing.some_id
          FROM some_table
          JOIN another_table on another_table.id = something
          JOIN one_more_table on some_table.id = other_id
          ORDER BY order_column)
      WITH DATA;
    SQL

    add_index :table, [:key_part_one, :key_part_two]
  end

  ...
end
Run Code Online (Sandbox Code Playgroud)

注意:我已经混淆了SELECT语句,只要相信我它的工作原理.

这里要注意的重要部分是我已经明确调用WITH DATA,因此应该立即填充和扫描视图.

这不会发生.迁移运行,如下所示

==  MyView: migrating ========================
==  MyView: migrated (0.0763s) ===============
Run Code Online (Sandbox Code Playgroud)

稍后db:refresh我们会看到以下内容

Reindexing Something...
Reindex queued
Reindexing Another...
Reindex queued
Reindexing …
Run Code Online (Sandbox Code Playgroud)

ruby postgresql activerecord ruby-on-rails materialized-views

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

Logcat --------- 系统开始

我正在解决一个奇怪的错误,当发生不良行为时,我在 logcat 中看到了这一点。

    --------- beginning of system
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我没有发现任何本机崩溃日志或任何异常,什么都没有。就在我的应用程序出问题的确切时间,正是这条“系统开始”行。

android adb logcat

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

使RatingBar辅助颜色不透明

我试图让RatingBar中未填充的星星变成不透明的颜色,但它似乎是一个由色调列表和PorterDuff模式组成的高级任务.是否有一种坚如磐石的方法可以使一个RatingBar的未填充星形成为真正不透明的颜色?

val color = ContextCompat.getColor(context, android.R.color.white)
ratingBar.secondaryProgressTintList = ColorStateList.valueOf(white)
ratingBar.secondaryProgressTintMode = PorterDuff.Mode.OVERLAY //whats the sauce?
Run Code Online (Sandbox Code Playgroud)

未填充的颜色仍然是透明的,视图的背景是半白色的!

android ratingbar

10
推荐指数
2
解决办法
404
查看次数

使用参数深度链接到另一个模块

我正在尝试使用深层链接进行跨模块用户导航,并且我需要传递一些参数。由于它位于另一个模块中,因此我无权访问id,因此所有navigate(@IdRes int resId, ...)方法都不适用。

使用 Android Jetpack 的导航组件导航具有键值对的Uri深层链接的最佳方法是什么?Bundle

navigation.xml(:应用程序模块)

<?xml version="1.0" encoding="utf-8"?>
<navigation 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/navGraph"
    app:startDestination="@id/feature_one">

    <include app:graph="@navigation/feature_one" />
    <include app:graph="@navigation/feature_two />
</navigation>
Run Code Online (Sandbox Code Playgroud)

feature_one.xml(:一个模块)

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/feature_one"
    app:startDestination="@id/oneFragment">
    <fragment
        android:id="@+id/oneFragment"
        android:name="my.app.OneFragment"
        android:label="OneFragment" />
</navigation>
Run Code Online (Sandbox Code Playgroud)

feature_two.xml(:两个模块)

<?xml version="1.0" encoding="utf-8"?>
<navigation 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/feature_two"
    app:startDestination="@id/twoFragment">

    <fragment
        android:id="@+id/twoFragment"
        android:name="my.app.TwoFragment"
        android:label="TwoFragment">
        <deepLink app:uri="myapp://my.app/?myId={myId}" />

        <argument android:name="myId" app:argType="long" />

    </fragment>
</navigation>
Run Code Online (Sandbox Code Playgroud)

OneFragment.kt(:一个模块)

    val bundle = bundleOf("myId" to 123L)

    val …
Run Code Online (Sandbox Code Playgroud)

android android-architecture-navigation androidx android-deep-link

10
推荐指数
1
解决办法
1924
查看次数

使用 viewLifecycleOwner 的生命周期范围从 Fragment 启动协程

我正在从片段启动协程,并且我了解到

lifecycleScope.launch {}
Run Code Online (Sandbox Code Playgroud)

viewLifecycleOwner.lifecycleScope.launch {}
Run Code Online (Sandbox Code Playgroud)

在大多数情况下基本上是相同的。

从 Fragment 内部启动协程时,使用其中一个比另一个有好处吗?

android android-lifecycle android-fragments kotlin-coroutines

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