小编Jak*_*old的帖子

在Android Studio中查看Git历史记录

我只能在Android Studio中查看本地历史记录.我如何查看git历史记录?

我已经使用Git进入Android Studio检查了我的项目.

android android-studio

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

Android测试:对话.检查它是显示()

这是我的方法,它工作正常,并显示对话框.

public void showDialog(){
    final Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.mylayout);
    dialog.show();
}
Run Code Online (Sandbox Code Playgroud)

我有一个测试项目,我想测试Dialog是否出现.我想应用.isShowing()方法.像这样......

assertTrue(dialog.isShowing());
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在我的测试中找到对话框变量.

我没有使用Robotium(这不是我的选择).我目前正在使用ActivityUnitTestCase进行测试.如果需要更多信息,请不要犹豫.

编辑

我试图通过公开Dialog来使用下面的答案

public Dialog getDiag(){
    return dialog;
}
Run Code Online (Sandbox Code Playgroud)

使用这个答案:当我在测试中运行showDialog()时出现了一个新问题,当它命中时它会中断:dialog.show();

android.view.WindowManager $ BadTokenException:*无法添加窗口 - 令牌null

java reflection android unit-testing dialog

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

你为什么要为每个命令输入git bash中的"git"?

git status
git add
git clone 
git push
git commit.... 
Run Code Online (Sandbox Code Playgroud)

为什么不用Git bash允许你键入git命令,如:

status
add
clone
push
Run Code Online (Sandbox Code Playgroud)

然后对于所有非git命令类型"nongit"或其他东西

nongit cd
nongit ls...
Run Code Online (Sandbox Code Playgroud)

或者这可能吗?

git repository

7
推荐指数
2
解决办法
350
查看次数

带有数据绑定的 AndroidX SwipeRefreshLayout

我正在尝试使用 AndroidX 库实现滑动刷新功能:androidx.swiperrefreshlayout.widget.SwipeRefreshLayout

我的应用程序正在使用 Android 数据绑定,因此我想使用可观察字段来控制此小部件的状态。

过去我使用过AppCompat one - 它已被弃用。

以前,我可以通过以下方式访问字段:

<android.support.v4.widget.SwipeRefreshLayout
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:refreshing="@{viewModel.isLoading}">
    ...
    // My RecyclerView here
</android.support.v4.widget.SwipeRefreshLayout>
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不再适用 - 与 AndroidX 等效。我错过了什么吗?或者是否有任何解决方案/解决方法来实现这一目标?

我的项目已经完全迁移到AndroidX,没有错误或依赖冲突。

data-binding android swiperefreshlayout android-databinding androidx

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

将String编码为BigInteger,然后解码回String

我找到了几乎解决了我的问题的答案:https: //stackoverflow.com/a/5717191/1065546

这个答案演示了如何使用使用Apache commons-codec的Base64编码将BigInteger编码为String然后再编译回BigInteger.

有没有一种方法可以将String的技术/方法编码为BigInteger,然后再返回String?若有,请有人解释如何使用它?

      String s = "hello world";
      System.out.println(s);

      BigInteger encoded = new BigInteger( SOME ENCODING.(s));
      System.out.println(encoded);

      String decoded = new String(SOME DECODING.(encoded));
      System.out.println(decoded);
Run Code Online (Sandbox Code Playgroud)

打印:

      hello world
      830750578058989483904581244
      hello world
Run Code Online (Sandbox Code Playgroud)

(输出只是一个例子,hello world不必解码到那个BigInteger)

编辑

更加具体:

我正在编写RSA算法,我需要将消息转换为BigInteger,然后我可以使用公钥(发送消息)加密消息,然后使用私钥解密消息,然后将数字转换回字符串.

我想要一种可以产生最小BigInteger的转换方法,因为我计划使用二进制文件,直到我意识到这个数字是多么荒谬.

java base64 encoding

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

Android检查应用启动时存储空间是否不足

我想我可以在广播接收器中使用Intent.ACTION_DEVICE_STORAGE_LOW,以便在设备存储空间不足时通知我.这里解释一下.

我知道我可以找到用户在这里有多少空间.

但是,我希望尽可能避免设置可用空间不足的边界.当存储空间不足时,操作系统会向用户发出通知.

问题:如果操作系统认为可用空间不足,是否只在启动时显示应用程序内错误消息?

android local-storage

3
推荐指数
1
解决办法
1287
查看次数

创建所有索引的列表 - 给定计数/大小

是否有更优雅的方法来创建所有索引的列表?

    private List<Integer> getIndexList(final int count) {
            final List<Integer> list = new ArrayList<>(count);

            for (int i = 0; i < count; i++) {
                list.add(i);
            }
            return list;
    }
Run Code Online (Sandbox Code Playgroud)

列表输出:

<[0,1,2,3,4,5,6,7,8,9]>

java

3
推荐指数
1
解决办法
44
查看次数

DataBinding在模块中不起作用

我在我的应用程序中使用数据绑定.我有一个应用程序模块,数据绑定工作成功.

但是,我也有一个'家庭模块'我试图使用相同的技术,但数据绑定在xml中出错,具有以下内容:

错误:(63,34)没有指定资源类型(在'onClick'上,值为'@ {viewModel :: onButtonClicked}').

我发现这个错误报告表明这是一个问题,但它已被修复.

我看不出代码有任何问题,我认为问题是因为它在库模块中.

我能做些什么才能让它发挥作用?

家里模块

activity_home.xml

<?xml version="1.0" encoding="utf-8"?>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable name="viewModel" type="com.flowmellow.projectx.home.ui.viewmodel.HomeViewModel"/>
    </data>

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/home_screen"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:context="com.flowmellow.projectx.home.ui.viewmodel.HomeActivity">

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/AppTheme.AppBarOverlay">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:popupTheme="@style/AppTheme.PopupOverlay"/>

        </android.support.design.widget.AppBarLayout>

        <android.support.constraint.ConstraintLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/content_main"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            tools:context="com.flowmellow.projectx.home.ui.viewmodel.HomeActivity">

            <TextView
                android:text="@string/activity_home_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/activity_home_title"
                android:textAppearance="@style/TextAppearance.AppCompat.Large"
                android:layout_marginStart="16dp"
                app:layout_constraintLeft_toLeftOf="parent"
                android:layout_marginLeft="16dp"
                android:layout_marginEnd="16dp"
                app:layout_constraintRight_toRightOf="parent"
                android:layout_marginRight="16dp"
                app:layout_constraintBottom_toTopOf="@+id/activity_home_button"
                android:layout_marginBottom="64dp" />

            <Button
                android:text="@string/activity_home_button"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:id="@+id/activity_home_button"
                style="@style/Widget.AppCompat.Button.Colored"
                android:onClick="@{viewModel::onButtonClicked}"/>

        </android.support.constraint.ConstraintLayout>

    </android.support.design.widget.CoordinatorLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)

HomeActivity

public class HomeActivity …
Run Code Online (Sandbox Code Playgroud)

android android-databinding

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

RxJava2 将两个 Single 转换为 Completable

我有两个单曲,我想做的是将它们转换为 Completable

 final Single<Boolean> httpRequestOne = createHttpRequestOne();
 final Single<Boolean> httpRequestTwo = createHttpRequestTwo();
Run Code Online (Sandbox Code Playgroud)

如果两个单曲都返回 true,则 Completable 的结果应该是 onSuccess 否则它将是 onError。

我也希望它们并行运行,所以我认为 concat 在这里无济于事

final Flowable<Boolean> flowable = httpRequestOne.concatWith(httpRequestTwo);
Run Code Online (Sandbox Code Playgroud)

java android rx-java2

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