这些天我正在研究在Android中模拟模态对话框.我已经google了很多,有很多讨论,但很遗憾没有太多的选择来获得它的模态.这里有一些背景,
对话框,模态对话框和Blockin
对话框/ AlertDialogs:如何在对话框启动时"阻止执行"(.NET风格)
没有直接的方法来获得模态行为,然后我想出了3个可能的解决方案,
1.使用对话框主题的活动,就像这个线程所说的那样,但我仍然无法使主要活动真正等待对话活动返回.主要活动转为停止状态,然后重新启动.
2.构建一个工作线程,并使用线程同步.但是,对于我的应用程序来说,这是一个巨大的重构工作,现在我在主UI线程中有一个主要活动和服务.
3.当存在模态对话框时,在循环内接管事件处理,并在对话框关闭时退出循环.实际上,这是构建一个真正的模态对话框的方式,就像它在Windows中的确切做法一样.我仍然没有这样的原型.
我仍然想用一个以对话为主题的活动模拟它,
1.通过startActivityForResult()启动对话活动
2.从onActivityResult()获取结果
这里有一些来源
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyView v = new MyView(this);
setContentView(v);
}
private final int RESULT_CODE_ALERT = 1;
private boolean mAlertResult = false;
public boolean startAlertDialog() {
Intent it = new Intent(this, DialogActivity.class);
it.putExtra("AlertInfo", "This is an alert");
startActivityForResult(it, RESULT_CODE_ALERT);
// I want to wait right here
return mAlertResult;
}
@Override
protected void onActivityResult (int requestCode, int resultCode, …Run Code Online (Sandbox Code Playgroud) MotionEvent没有得到构造函数,我想在单元测试中手动创建一个MotionEvent,然后如何获得它?谢谢.
我得到了我的Qt项目,我正在使用Qt Creator.我想对我的所有代码进行单元测试.
但是我在QTestLib框架上相当新,但是每个人都推荐它用于测试基于Qt的源代码.现在我有点困惑如何用app项目构建测试项目.
在这种情况下,你们如何管理测试代码?谢谢.
我最初的目标是模态对话框,但是你知道,Android不支持这种类型的对话框.或者,构建以对话为主题的活动可能会奏效.
这是代码,
public class DialogActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(android.R.style.Theme_Dialog);
super.onCreate(savedInstanceState);
requestWindowFeature (Window.FEATURE_NO_TITLE);
Button yesBtn = new Button(this);
yesBtn.setText("Yes");
yesBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
DialogActivity.this.finish();
}
});
this.setContentView(yesBtn);
}
Run Code Online (Sandbox Code Playgroud)
然而,背景总是黑色,这真的令人困惑.人们遇到同样的问题,
http://code.google.com/p/android/issues/detail?id = 4394
我只是想让它看起来更像用户对话.那么,如何使这个DialogActivity透明,永远不会覆盖底层屏幕?
谢谢.
这就是我创作风格的方式
<style name="CustomDialogTheme" parent="android:Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">false</item>
</style>
Run Code Online (Sandbox Code Playgroud) 我必须直接读/写文件,没有任何缓冲.在旧的C方式中,我通过使用带O_DIRECT标志的open方法来做到这一点.
这有可能用Java方式吗?
这是O_DIRECT描述
尝试最小化I/O与此文件之间的缓存效果.通常,这会降低性能,但在特殊情况下很有用,例如应用程序执行自己的缓存时.文件I/O直接进出用户空间缓冲区.
更新:
这是我的代码示例,
// write
fos = new FileOutputStream(fileName);
fos.write(inputData);
fos.flush();
fos.close();
// read
fis = new FileInputStream(fileName);
int len = fis.read(outputData, offset, length);
fis.close();
Run Code Online (Sandbox Code Playgroud)
背景是我将数据(实际上是命令)写入SD卡(某种智能卡)上的文件,然后智能卡接收命令并将结果准备到同一文件.通常情况下,我可以从文件中读取数据(结果),但我得到了同样的inputData和outputData,即,我只是得到我的命令了.这是意想不到的结果.我怀疑代码是否只是写入/读取缓冲区,而不是真实文件.Flush无法正常工作.
我有主干和发布分支.如果我修复了发布分支中的错误,我肯定应该将修复程序集成到trunk.但是,我没有找到专门用于整合这样一个变更列表的命令; 我错过了什么?
在我推出新模拟器之后的某个时间,我第一次尝试上传我的apk,但是我得到了"模拟器:错误:用户数据图像被另一个模拟器使用.中止".
我推出了一个新的模拟器,并且不管它,几分钟后,DDMS显示"设备离线".
我不得不重新启动一个新的,你知道,浪费了几分钟.
我一直很困难,我不断收到这个错误并减慢了调试速度.
我如何解决它?
我以宏的方式定义了一系列字符串常量,如下所示:
#define EXT_RESULT_APPID @"appid"
#define EXT_RESULT_ERROR_CODE @"errorcode"
#define EXT_RESULT_PROGRESS @"progress"
...
Run Code Online (Sandbox Code Playgroud)
所有这些常量都应该在相同的上下文中使用,所以我想将它们限制在同一个命名空间中,我不想让它们全局化,就像这篇文章所说的那样.
另一方面,我可以将所有数字常量放在枚举中,但它不适用于字符串.那么我怎么能组合这些相关的字符串常量?
我向RelativeLayout注册了一个监听器,见下文.我想添加一些自定义事件处理,
mOnTouchListener = new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
final int action = motionEvent.getAction();
boolean ret = false;
switch (action) {
case MotionEvent.ACTION_DOWN:
ret = doSth(motionEvent);
break;
case MotionEvent.ACTION_MOVE:
ret = doSth(motionEvent);
break;
case MotionEvent.ACTION_UP:
ret = doSth(motionEvent);
break;
}
return ret; // returning false got me none of MOVE/UP events right here
}
};
Run Code Online (Sandbox Code Playgroud)
但是,除非返回true,否则我无法获得任何MOVE/UP事件.
另一个尝试,我向CheckBox注册了同样的监听器,一切都很顺利.
ViewGroup和Widget之间有区别吗?设计目的?
我是RxJava的新手,这是我的情况,
List<A>返回例:
request(url1, callback(List<A> listA) {
for (A a : listA) {
request(url2, callback(AA aa) {
a.set(aa);
}
}
}
Run Code Online (Sandbox Code Playgroud)
A和B是独立的
如何构造代码?我还使用Retrofit作为网络客户端.
android ×7
asynchronous ×1
branch ×1
dialog ×1
events ×1
file-io ×1
ios ×1
java ×1
modal-dialog ×1
nsstring ×1
objective-c ×1
perforce ×1
qt ×1
qtestlib ×1
qttest ×1
rx-java ×1
unit-testing ×1