我目前需要在我正在制作的应用程序中执行prolog代码.我知道Apple可能永远不会在App Store中允许这样的东西,但这也不是意图.这是一个永远不会到达App Store的私人项目.
目的
在这种情况下,prolog用于描述对象(例如电话)及其属性.将使用prolog脚本中指定的坐标使用OpenGL绘制对象.使用prolog的原因是我需要能够向程序查询该对象具有的一些功能,并且对此进行了大量修改.结论:我"需要"从我的应用程序查询prolog脚本.
可能的解决方案
可悲的是,谷歌让我几乎没有任何结果,所以我觉得我可能在这个项目上很孤单.如果有人有任何经验或线索,我会非常感激.
我最近一直在阅读相当多的图形数据结构,因为我打算编写自己的UML工具.据我所知,我想要的可以建模为由顶点和边组成的简单图形.顶点将具有一些值,并且最好表示为对象.据我所知,边缘不需要既不是定向的也不是加权的,但我不想选择一种以后不可能包含这些属性的实现.
受过纯面向对象编程的教育,我想到的第一件事就是按类表示顶点和边,例如:
Class: Vertice
- Array arrayOfEdges;
- String name;
Class: Edge
- Vertice from;
- Vertice to;
Run Code Online (Sandbox Code Playgroud)
这使我有可能在以后引入权重,方向等.现在,当我阅读实现图表时,似乎这是一个非常罕见的解决方案.Stack Overflow上的早期问题提出了邻接列表和邻接矩阵,但对图表来说是全新的,我很难理解为什么这比我的方法更好.
我的应用程序最重要的方面是能够轻松计算单击和移动的顶点,以及在顶点之间添加和删除顶点和边的功能.这在一个实现中比另一个更容易实现吗?
我选择的语言是Objective-C,但我不相信这应该是有意义的.
我们都知道如何在 AndroidManifest.xml 中使用意图过滤器来声明诸如搜索、推送等活动的功能。我目前使用这样的意图过滤器以以下方式注册自定义 URL 方案:
<activity android:name="NameOfActivity" >
<intent-filter >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWABLE" />
<data
android:host=""
android:scheme="customscheme" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
这一切都非常有效,直到我决定将所有活动转换为片段,因为我需要在表格上以不同的方式显示用户界面。现在,在声明为大或更大的设备上,我没有在活动之间切换,而是根据要求删除和添加新片段。这个选择是因为屏幕的左侧总是显示相同的内容,所以我没有将此内容添加到所有活动中,而是更改了片段。
这里的问题是,虽然意图过滤器在手机上启动了正确的活动,但这个活动不应该在平板电脑上启动。相反,我想在片段中处理这个 URL。截至目前,我认为没有办法解决这个问题。一个想法是以编程方式添加意图过滤器,但经过一些研究,我无法弄清楚这是否可行。另一个想法是以某种方式在片段上添加意图过滤器,但这将不起作用,因为如果没有托管它的活动,片段将无法启动。
简而言之:在手机上,我需要一个活动来处理意图过滤器,但在平板电脑上,我需要另一个活动来处理意图过滤器。
有没有办法做到这一点?
我目前正在尝试活动测试教程(在这里找到),并且遇到了问题.似乎每当我尝试在UIThread中调用某些东西时,我都会得到一个java.lang.NullPointerException.
public void testSpinnerUI() {
mActivity.runOnUiThread( new Runnable() {
public void run() {
mSpinner.requestFocus();
}
});
}
Run Code Online (Sandbox Code Playgroud)
这给了我:
不完整:java.lang.NullPointerException
没有别的.我现在在两个不同的样品上尝试了这个,结果相同.我试着围绕mSpinner.requestFocus()调用使用try/catch子句,似乎mSpinner在线程内是null.我已经使用在同一个示例中找到的setUp()函数正确设置了它,并且快速assertNotNull(mSpinner)向我显示在setUp()函数之后mSpinner实际上不是null.这可能是什么原因?
编辑; 好的,已经完成了一些测试.似乎正在测试的应用程序在每个测试之间重置.这基本上使我必须在每次测试之间重新实例化所有变量.这是正常的吗?