我在我的android应用程序中使用Dagger2 for DI.我发现我必须为每个使用@Inject字段的类编写inject方法.有没有办法我可以注入父类,这样我就不必在每个子类上调用注入?以活动为例.我有一个BaseActivity每个活动都延伸出来的.有没有办法可以在组件中为BaseActivity创建一个注入方法,只需在BaseActivity的onCreate中调用注入,子活动中的@inject字段会自动注入?
本AudioManager类有一个方法,abandonAudioFocus()而另一种方法requestAudioFocus().我想知道什么是音频焦点?如果AudioManager对象获得音频焦点或丢失音频焦点会发生什么?
谢谢!
什么是摄影中的"抗拒"?我在Android文档中阅读了android.hardware.Camera.Parameters.setAntibanding()方法中的这个术语.
在JellyBean之后,Android SDK包含一个ActivityOptions.makeScaleUpAnimation()API,用于从视图中使用纵向放大动画启动活动.我想知道如何在完成活动时获得一个反向动画,将活动窗口缩小到原始视图?另一个问题是,我可以在使用ActivityOptions.makeScaleUpAnimation()时定义动画持续时间吗?
animation android scale android-activity android-4.2-jelly-bean
我想知道如何将 json 数组直接发布到 Rails 服务器。说,
POST '/api/notes_bulk', HTTP/1.1
Content-Type: application/json
[{“content”:”content1”, “title”:”title1”}, {“content”:”content2”, “title”:”title2”}, {“content”:”content3”, “title”:”title3”}, {“content”:”content4”, “title”:”title4”}, {“content”:”content5”, “title”:”title5”}]
Run Code Online (Sandbox Code Playgroud)
我对它做了一些搜索,所有的例子都有某种映射到数组的键。而在我的情况下,json 是其顶层的数组。如何在控制器代码中获取json数据?我注意到 rails 用“_json”键包装这些数据,但是当我访问它时,它说
Unpermitted parameters: _json, ....
我有一个 textarea,其高度属性在 CSS 中设置为 100%。它看起来像这样:

当我应用引导程序样式(向其添加“表单控件”类)时,我看起来像这样:

检查元素后。我发现引导程序将其高度值覆盖为“自动”。CSS 看起来像这样:
textarea.form-control{
height: auto;
}
Run Code Online (Sandbox Code Playgroud)
但即使我将上面代码中的高度更改为
textarea.form-control {
height:100%
}
Run Code Online (Sandbox Code Playgroud)
它看起来仍然是这样的:

请注意,与原始高度相比,高度仍然缩小了一点。
如何将其高度设置为原始高度(如第一张图片中所示)并仍然对其应用 Bootstrap 样式?
我正在制作一个带有RxJava的Android应用程序,在其中一个页面中,我有一个按钮,按下时,页面将刷新.如果用户在此期间没有按下按钮,我还希望每10秒自动刷新一次.但是当用户单击该按钮时,我希望在单击后10秒后发生自动刷新操作.而不是继续自己的10秒间隔.例如,在第二个0,应用程序执行自动刷新,然后在第二个3,用户按下按钮.然后自动刷新应该在第二个13,第二个23等处发生.我知道有一个interval()操作员以一定的间隔发出物品.但似乎没有办法"重置"开始时间.它有点像取消订阅并interval()再次订阅Observable.一段代码就像
Observable<Long> intervalObservable = Observable.inteval(10, TimeUnit.SECONDS)
RxView.click(refreshButton).map(ignored -> 0L)
.merge(intervalObservable)
.subscibe(ignore -> performRefresh());
Run Code Online (Sandbox Code Playgroud)
如果有一种方法可以"取消合并" intervalObservable,那么我可以onNext将其取消合并然后再合并.但似乎没有.我怎样才能做到这一点?
我参考了这个链接:如何在Android中创建虚线/虚线?,并使用DashPathEffect.但这对我不起作用?为什么?我的代码:
public class NoteEditText extends EditText {
private Paint mPaint;
public NoteEditText(Context context) {
super(context);
}
public NoteEditText(Context context, AttributeSet attrs) {
super(context, attrs);
mPaint = new Paint();
mPaint.setStrokeWidth(1);
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
mPaint.setColor(Color.DKGRAY);
PathEffect effects = new DashPathEffect(new float[]{5,5,5,5},1);
mPaint.setPathEffect(effects);
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
int height = this.getHeight();
int lineHeight = this.getLineHeight();
int lineNum = height / lineHeight;
L.l("line count: " + lineNum);
for (int i = 0; i < lineNum; i++) {
int …Run Code Online (Sandbox Code Playgroud) 我正在使用gradle来构建我的android项目,并且无法运行单个单元测试.我有几个测试类,其中一个是MockServerTest,我只想在这个类中运行测试方法.
我尝试使用gradle -Dtest.single=MockServerTest test但结果运行了所有测试,包括其他测试类中的测试.
我也试过,gradle test --tests MockServerTest但发生错误说
Test filtering is not supported for given version of junit. Please upgrade junit version to at least 4.6.
Run Code Online (Sandbox Code Playgroud)
但是我在我的gradle文件中使用了junit 4.12
testCompile 'junit:junit:4.12'
Run Code Online (Sandbox Code Playgroud)
我正在使用gradle 2.4 com.android.tools.build:gradle:1.2.3.另外,如何在单个测试类中运行单个测试方法?
顺便说一句,我可以在AndroidStudio中运行单一测试方法,右键单击测试方法并run targetTestMethod()从菜单中选择.但是如何在终端实现这一目标呢?我想AndroidStudio也会触发某个命令来执行此操作.我怎么能看到那个命令是什么?
我在MediaStore中获得了图片ID.如何在ID中查看图库中的图像?我目前使用以下代码:
ContentResolver cr = context.getContentResolver();
String columns[] = new String[]{
Media._ID, Media.DATA
};
Cursor cursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, Media._ID+"=?", new String[]{id+""}, null);
if(cursor.moveToNext()) {
String imagePath = cursor.getString(cursor.getColumnIndex(Media.DATA));
Uri imageUri = Uri.fromFile(new File(imagePath));
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.addCategory(android.content.Intent.CATEGORY_DEFAULT);
intent.setDataAndType(imageUri, "image/*");
((Activity)context).startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
它有效,但它太麻烦了.我认为应该有一种更简单的方法来做到这一点.关键是从图像ID获取图像Uri.
我正在使用 Robolectric 进行单元测试。我有一个测试类 say MainActivityTest,它有几种测试方法:
@RunWith(...)
@Config(...)
public class MainActivityTest {
@Test
public void testMethod1() {
//...
}
@Test
public void testMethod2() {
//...
}
// other test methods
}
Run Code Online (Sandbox Code Playgroud)
我想在执行任何测试方法之前只执行一次方法(init方法),并在执行所有测试方法之后执行另一个方法。我怎样才能做到这一点?我知道我可以通过在构造函数中调用init方法来解决第一个问题,但是如何解决第二个问题呢?我知道我可以子类化我的应用程序类并使用该应用程序,但这对我来说有点尴尬,因为我使用的是 AndroidAnnotations 并且我使用的真正应用程序类是最终的,我只想在这个测试类中执行此操作,而不是所有测试类。我想知道是否有更好的方法来做到这一点。
android ×9
java ×5
unit-testing ×2
animation ×1
arrays ×1
camera ×1
css ×1
dagger ×1
dagger-2 ×1
dotted-line ×1
draw ×1
gradle ×1
html ×1
json ×1
mediastore ×1
ondraw ×1
photography ×1
robolectric ×1
rx-android ×1
rx-java ×1
scale ×1
textarea ×1
uri ×1