小编azi*_*ian的帖子

Gradle找不到tools.jar

我正在使用带有gradle的javadoc doclet,所以我需要使用package tools.jar,它位于jdk的lib文件夹中(在我的例子中为1.6.0_26).

重点是gradle没有自动获取它,所以我将该工具包添加到我的libs文件夹,然后将其添加到dependencies.gradle.

现在我想直接从我的JDK home转到我的dependencies.gradle.有没有办法做到这一点?我在我的dependencies.gradle中尝试了下一个:

compile files("${System.properties['java.home']}/lib/tools.jar")
Run Code Online (Sandbox Code Playgroud)

但它在编译时没有找到它.

java groovy build gradle

153
推荐指数
15
解决办法
22万
查看次数

什么时候调用onSaveInstanceState()和onRestoreInstanceState()?

下图(来自官方文档)描述了Android活动的众所周知的生命周期:

在此输入图像描述

在另一方面,当活动是由系统(例如,由于存储器需要被回收的)破坏,该活动的状态有时自动地保存和恢复由所述方法的装置onSaveInstanceState()onRestoreInstanceState()由下图所示(也来自官方文件):

在此输入图像描述

我知道,onSaveInstanceState()不是总叫当活动即将被销毁.例如,如果由于用户按下"后退"按钮而导致销毁,则不会保留活动状态.但是在状态保存并恢复和onSaveInstanceState()/ onRestoreInstanceState()被调用的情况下,它们究竟何时被调用

例如,根据上面的图,onRestoreInstanceState()可以在之前onStart(),之后onStart()但之前onResume()或之后调用onResume().同样,存在几种可能性onSaveInstanceState().那他们什么时候打电话呢?

理想情况下,我希望看到一个组合图,显示活动生命周期状态和保存/恢复方法(如果存在).

android restore android-lifecycle android-activity

94
推荐指数
4
解决办法
5万
查看次数

Android中@SmallTest,@ MediumTest和@LargeTest注释的目的是什么?

我是Android新手,我看过使用这些注释的示例代码.例如:

@SmallTest
public void testStuff() {
    TouchUtils.tapView(this, anEditTextView);
    sendKeys("H E L P SPACE M E PERIOD");
    assertEquals("help me.", anEditTextView.getText().toString());
}
Run Code Online (Sandbox Code Playgroud)

那个注释有什么作用?

java tdd android unit-testing android-espresso

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

ConstraintLayout:以编程方式更改约束

我需要帮助ConstraintSet.我的目标是在代码中更改视图的约束,但我无法弄清楚如何正确执行此操作.

我有4 TextView秒和1个ImageView.我需要为ImageView其中一个设置约束TextView.

check_answer4 = (TextView) findViewById(R.id.check_answer4);
check_answer1 = (TextView) findViewById(R.id.check_answer1);
check_answer2 = (TextView) findViewById(R.id.check_answer2);
check_answer3 = (TextView) findViewById(R.id.check_answer3);

correct_answer_icon = (ImageView) findViewById(R.id.correct_answer_icon);
Run Code Online (Sandbox Code Playgroud)

如果第一个答案是正确的,我需要设置的限制ImageView,以

app:layout_constraintRight_toRightOf="@+id/check_answer1"
app:layout_constraintTop_toTopOf="@+id/check_answer1"
Run Code Online (Sandbox Code Playgroud)

如果第二个答案是正确的,我需要设置的限制ImageView,以

app:layout_constraintRight_toRightOf="@+id/check_answer2"
app:layout_constraintTop_toTopOf="@+id/check_answer2"
Run Code Online (Sandbox Code Playgroud)

等等.

android android-layout android-view android-constraintlayout

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

通过Android SDK管理器下载SDK速度慢

当我运行Android SDK管理器下载SDK平台时,下载速度为8 KiB/s.下载Android 2.2,API 8等平台需要2个多小时.通过浏览器下载内容没有问题.有谁知道如何解决这个问题?

sdk android download android-build

73
推荐指数
5
解决办法
4万
查看次数

为什么没有Activity的getContentView()方法?

这个Activity班有一个setContentView()方法.该PopupWindow班有一个getContentView()方法,但没有别的一样.有没有其他方法来获取活动的主要内容视图?

android android-layout android-view

51
推荐指数
3
解决办法
4万
查看次数

Android:为什么setVisibility(View.GONE); 或setVisibility(View.INVISIBLE); 不工作

我希望我DatePicker的按钮在开始时不可见.当我按下我的魔法按钮时,我想设置可见性(View.Visible);

这里的问题是当我setVisibility(View.GONE)setVisibility(View.INVISIBLE)什么都没有改变并且组件仍然可见时.

final DatePicker dp2 = (DatePicker) findViewById(R.id.datePick2);
final Button btn2 = (Button) findViewById(R.id.btnDate2);

dp2.setVisibility(View.GONE);
dp2.setVisibility(View.INVISIBLE);
btn2.setVisibility(View.GONE);
btn2.setVisibility(View.INVISIBLE);

btn2.setOnClickListener(new View.OnClickListener() {
    public void onClick(View arg0) {
        TextView txt2 = (TextView) findViewById(R.id.txt2);
        txt2.setText("You selected " + dp2.getDayOfMonth()
            + "/" + (dp2.getMonth() + 1) + "/" + dp2.getYear());
    }
});
Run Code Online (Sandbox Code Playgroud)

java android android-datepicker android-layout android-view

51
推荐指数
5
解决办法
23万
查看次数

正则表达式信用卡号码测试

我正在测试一个Regex模式匹配信用卡的应用程序,然后突出显示这些数字.我正在使用网站http://regexpal.com/为我的测试创建测试信用卡信用卡号码.我的要求是拥有有效的信用卡号码,它们之间可以有" - "和/或",".我没有成功建立这样的数字,就像我使用网站测试它一样

http://regexpal.com.

下面的方案我需要很少的信用卡号码

  1. 有效的信用卡号,任何数字之间可以有" - ".
  2. 有效的信用卡号,任何数字之间可以有",".
  3. 有效的信用卡号码,可以在任何数字之间加上","或" - ".

regex regex-greedy

43
推荐指数
6
解决办法
10万
查看次数

在提交FragmentTransaction之前检查状态是否已保存

我有时会看到以下用于提交的堆栈跟踪,当用户没有查看活动时(状态保存后)可能会发生这种情况:

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
    at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1327)
    at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1338)
    at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
    at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
Run Code Online (Sandbox Code Playgroud)

看看Android源代码,这很有意义:

private void checkStateLoss() {
        if (mStateSaved) {
            throw new IllegalStateException(
                    "Can not perform this action after onSaveInstanceState");
        }
        if (mNoTransactionsBecause != null) {
            throw new IllegalStateException(
                    "Can not perform this action inside of " + mNoTransactionsBecause);
        }
 }
Run Code Online (Sandbox Code Playgroud)

现在,我想知道是否有任何方法(除了在(保存/恢复)InstanceState中存储类变量)以检查片段是否将以不合需要的状态提交,这样我可以存储事务以供日后使用在适当的时候提交.

android android-fragments fragmentmanager android-savedstate onsaveinstancestate

41
推荐指数
3
解决办法
2万
查看次数

Robolectric:Resources $ NotFoundException:使用Android Gradle Plugin 3的字符串资源ID

Android Studio 3.0 Beta2
classpath 'com.android.tools.build:gradle:3.0.0-beta3'
testCompile 'org.robolectric:robolectric:3.4.2'
Run Code Online (Sandbox Code Playgroud)

我正在使用的测试类无法运行:

@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
@RunWith(RobolectricTestRunner.class)
public class RecipeAdapterTest {
    private MainActivity activity;

    @Before
    public void setup() {

    activity = Robolectric.setupActivity(MainActivity.class);

    /* Also tried this same Error
     activity = Robolectric.buildActivity(MainActivity)
                .create()
                .resume()
                .get();
    */
    }

    @Test
    public void testActivityShouldNotBeNull() {
        assertThat(activity, is(notNullValue()));
    }
}
Run Code Online (Sandbox Code Playgroud)

这是错误的堆栈跟踪:

android.content.res.Resources$NotFoundException: String resource ID #0x7f0c0020

    at android.content.res.Resources.getText(Resources.java:274)
    at android.content.res.Resources.getString(Resources.java:360)
    at android.content.Context.getString(Context.java:376)
    at org.robolectric.shadows.ShadowActivity.getActivityTitle(ShadowActivity.java:100)
    at org.robolectric.shadows.ShadowActivity.callAttach(ShadowActivity.java:110)
    at org.robolectric.android.controller.ActivityController.attach(ActivityController.java:56)
    at org.robolectric.android.controller.ActivityController.of(ActivityController.java:25)
    at org.robolectric.Robolectric.buildActivity(Robolectric.java:98)
    at org.robolectric.Robolectric.buildActivity(Robolectric.java:94)
    at org.robolectric.Robolectric.setupActivity(Robolectric.java:102) …
Run Code Online (Sandbox Code Playgroud)

testing android unit-testing robolectric android-testing

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