我有一个相对简单的Android应用程序,其中一个Activity
显示项目列表,另一个显示所选项目的详细信息.我启动list活动,这是我最重要的活动(FLAG_ACTIVITY_CLEAR_TOP
用于清除调用它的登录活动):
Intent intent = new Intent(this, ListInstancesActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
Run Code Online (Sandbox Code Playgroud)
并且从该活动中我对选择的项目采取行动:
Intent detailIntent = new Intent(this, ShowInstanceActivity.class);
detailIntent.putExtra(ShowInstanceFragment.ARG_ITEM_ID, id);
startActivity(detailIntent);
Run Code Online (Sandbox Code Playgroud)
一切正常,如果我使用软键"后退"按钮,那么ListInstancesActivity
我会按照我的预期返回.但是,如果我按下操作栏上的后退/上移按钮,它会破坏并重新创建ListInstancesActivity
.这很糟糕,因为这样做计算成本相对较高.
如何使操作栏的行为与软键相同,只返回上一个活动而不是销毁它.
应该注意的是,我正在使用动作栏的支持库版本.
我的相关部分AndroidManifest.xml
是
<activity
android:name=".agenda.ListInstancesActivity"
android:label="@string/list_instances_activity_title">
</activity>
<activity
android:name=".agenda.ShowInstanceActivity"
android:label="@string/show_instance_activity_title"
android:parentActivityName=".agenda.ListInstancesActivity">
</activity>
Run Code Online (Sandbox Code Playgroud) 我有一个模板,我只想在当前项目与前一项目有不同的字段时生成一些HTML.如何访问ng-repeat中的上一项?
我想要一个包含1到500范围内整数的列表.是否有一些方法可以使用Guava(或简单的Java)创建此列表,而无需遍历范围并在我自己的范围内单独添加值码?
解决方案如下(在这里发布,因为一些答案提供了正确的信息,但没有一个给出完整的解决方案):
__PRE__
结果是类型 __CODE__
我试图通过以下方式更新EditText
Espresso测试的一部分:
onView(allOf(withClassName(endsWith("EditText")), withText(is("Test")))).perform(clearText())
.perform(click())
.perform(typeText("Another test"));
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
com.google.android.apps.common.testing.ui.espresso.NoMatchingViewException: No views in hierarchy found matching: (with class name: a string ending with "EditText" and with text: is "Test")
Run Code Online (Sandbox Code Playgroud)
通过分解测试线我可以看到这在执行之后发生clearText()
,因此我假设匹配器在每个之前重新运行perform
并且在第二个动作之前失败.虽然这是有道理的,但是让我对如何更新EditText
使用Espresso 感到有些困惑.我该怎么做?
请注意,我无法在此方案中使用资源ID或类似信息,并且必须使用上面显示的组合来标识正确的视图.
我希望Eclipse格式化一些调用构建器的代码,如下所示:
final Item item = new Item.Builder()
.name("something")
.field("a value")
.build();
Run Code Online (Sandbox Code Playgroud)
即对齐'.' 第一行的字符.我可以通过手动对齐第二行(.name("something"))来手动说服Eclipse这样做,但任何自动格式化都会破坏它.
我已经玩过了我可以在Eclipse中找到的所有各种格式化选项,但它们似乎都没有做我想要的.是否存在以这种方式布置代码的格式选项的任何想法?
我难以说服新的Android构建系统运行测试.在运行测试时,它会给出Unable to resolve activity for: Intent
在其他问题中讨论过的错误,但是没有任何内容可以解决我的问题.
我已将其剥离,以便我的测试包完全不依赖于我的主程序包(com.wealdtech.app
),但仍然存在启动活动的问题.
我的测试活动:
package com.wealdtech.test;
import android.app.Activity;
import android.os.Bundle;
public class TileLayoutTestActivity extends Activity
{
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
}
Run Code Online (Sandbox Code Playgroud)
我的测试班:
package com.wealdtech.test;
import android.test.ActivityInstrumentationTestCase2;
public class TileLayoutTest extends ActivityInstrumentationTestCase2<TileLayoutTestActivity>
{
public TileLayoutTest()
{
super(TileLayoutTestActivity.class);
}
@Override
protected void setUp() throws Exception
{
super.setUp();
setActivityInitialTouchMode(false);
}
public void testNull()
{
final TileLayoutTestActivity activity = getActivity();
activity.finish();
}
Run Code Online (Sandbox Code Playgroud)
build.gradle的相关部分:
apply plugin: 'android-library'
android {
compileSdkVersion 19
buildToolsVersion …
Run Code Online (Sandbox Code Playgroud) 在beforeSave
钩子中,我想在更新之前获取对象的状态.在这种特殊情况下,它是阻止用户在完成选择后改变他们的选择.伪代码看起来像:
If (user has already voted) {
deny;
} else {
accept;
}
Run Code Online (Sandbox Code Playgroud)
我到目前为止的代码是:
Parse.Cloud.beforeSave('votes', function(request, response) {
if (!request.object.isNew()) {
// This is an update. See if the user already voted
if (request.object.get('choice') !== null) {
response.error('Not allowed to change your choice once submitted');
}
}
response.success();
}
Run Code Online (Sandbox Code Playgroud)
但是request.object
已经应用了更新的对象的状态.
请注意,'votes'对象是单独创建的,因此不允许插入但不允许更新是不够的; 我需要知道数据库中是否已经设置了一个给定的字段.
我有一些简单的代码使用TTS生成一个wave文件,然后播放它:
public void TestSpeech()
{
SpeechSynthesizer synth = new SpeechSynthesizer();
using (MemoryStream stream = new MemoryStream())
{
synth.SetOutputToWaveStream(stream);
synth.Speak("Hello world");
stream.Seek(0, SeekOrigin.Begin);
IWaveSource source = new WaveFileReader(stream);
EventWaitHandle waitHandle = new EventWaitHandle(false, EventResetMode.AutoReset);
var soundOut = new WasapiOut();
soundOut.Initialize(source);
soundOut.Stopped += (s, e) => waitHandle.Set();
soundOut.Play();
waitHandle.WaitOne();
soundOut.Dispose();
source.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
一切都工作正常,但我想知道在我开始播放wave文件之前会持续多长时间.有没有计算这个的方法,或者它可以在某个地方使用?
如果它在某处可用,它是如何计算的?我假设它与流中的数据量有关,但是如何?
我试图并行运行一些TestNG测试但无法访问testng.xml,因为IntelliJ可以即时构建它.我已经尝试将诸如'parallel = methods'之类的参数添加到运行配置中,但这似乎没有任何区别.
如何在不诉诸于构建自己的testng.xml文件的情况下,使IntelliN并行运行TestNG?
我在Intellij 12中设置了一个现有的Java项目,我正在尝试向它添加一些Groovy类.我开始尝试添加一个简单的Spock类用于测试目的,但是当我右键单击该类时,它不会给我一个选项来运行它.
我已经看了一下我的Intellij配置,它正确地引入了groovy.此外,我可以编写一个Groovy脚本,该脚本使用Groovy类,并且运行没有问题,因此看起来Groovy已连接.还有什么我需要配置来专门运行Spock测试吗?