我想在strings.xml文件中引用另一个字符串中的字符串,如下所示(特别注意"message_text"字符串内容的结尾):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="button_text">Add item</string>
<string name="message_text">You don't have any items yet! Add one by pressing the \'@string/button_text\' button.</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了上面的语法,然后文本打印出"@ string/button_text"作为明文.不是我想要的.我想要打印消息文本"你还没有任何项目!按"添加项目"按钮添加一个项目."
有没有任何已知的方法来实现我想要的?
RATIONALE:
我的应用程序有一个项目列表,但是当该列表为空时,我会显示"@android:id/empty"TextView.TextView中的文本是通知用户如何添加新项目.我想让我的布局变得傻瓜变化(是的,我是个傻瓜:-)
我的布局中有一个Android Spinner视图.我希望该微调器在关闭时只显示一个文本项,但是当用户点击它时(即打开微调器对话框)我想为每个项显示更多信息,包括图标和其他描述文本视图.现在,微调器在两种状态下都显示了相同的布局(图标,标题+描述).
如果我将一个ArrayAdapter附加到微调器,那么我可以访问一个名为"setDropDownViewResource"的东西,但这不一定是我需要的东西,因为我的微调器数据是从一个Cursor中提取的,而不是从任何类型的数组中取出的(我现在有, ,创建了我自己的适配器,扩展了BaseAdapter).
谁可以帮助我?
是什么在呼唤的差别
stopSelf()
,stopSelf(int)
或者stopService(new Intent(this,MyServiceClass.class))
里面onStartCommand()
?
例如,如果我以这种方式两次启动相同的服务:
...
Intent myIntent1 = new Intent(AndroidAlarmService.this, MyAlarmService.class);
myIntent1.putExtra("test", 1);
Intent myIntent2 = new Intent(AndroidAlarmService.this, MyAlarmService.class);
myIntent2.putExtra("test", 2);
startService(myIntent1);
startService(myIntent2);
...
Run Code Online (Sandbox Code Playgroud)
并以这种方式实现onStartCommand:
public int onStartCommand(Intent intent, int flags, int startId)
{
Toast.makeText(this, "onStartCommand called "+intent.getIntExtra("test", 0), Toast.LENGTH_LONG).show();
stopService(new Intent(this,MyAlarmService.class));
return START_NOT_STICKY;
}
Run Code Online (Sandbox Code Playgroud)
我得到了与三种方法完全相同的行为,即onDestroy仅在onStartCommand执行两次后才会被调用.
如何在styles.xml中提供粗体和普通样式?我给出的代码是:
<style name="textbold" parent="@android:style/TextAppearance">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textstyle">bold</item>
</style>
<style name="textregular" parent="@android:style/TextAppearance">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textstyle">normal</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但它在这里显示错误: <item name="android:textstyle">
我正在尝试以编程方式在ListView中的CheckedTextView项目上设置"android:checkMark"属性.运行我的应用程序时,我得到以下异常:
android.content.res.Resources$NotFoundException: Resource ID #0x101021a
Run Code Online (Sandbox Code Playgroud)
ID#0x101021a的资源对应于android.R.attr.listChoiceIndicatorMultiple,这正是我传递给CheckedTextView的值:
mCheckedTextView.setCheckMarkDrawable(android.R.attr.listChoiceIndicatorMultiple)
Run Code Online (Sandbox Code Playgroud)
这不是用Java做的吗?我尝试(并成功)从XML布局触发所需的行为:
<CheckedTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:id="@android:id/text1" />
Run Code Online (Sandbox Code Playgroud)
问题是我在编译时不知道它应该是什么
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
Run Code Online (Sandbox Code Playgroud)
要么
android:checkMark="?android:attr/listChoiceIndicatorSingle"
Run Code Online (Sandbox Code Playgroud)
因此,我需要在运行时设置这些值.
如何GROUP BY
为CursorLoader 定义查询?
这两个构造一个CursorLoader
我看拿一个单一的Context
或Context
,Uri
,projection
,selection
,selectionArgs
和sortOrder
.
但没有groupBy
.
(我正在使用Android 2.3设备的支持包)
各位开发人员!
我的应用程序中有一个同步适配器和相应的同步服务.根据Google示例代码,我已声明了所有内容,包括同步服务.更大的图片看起来像这样:
<service
android:name="com.myapp.SyncService"
android:exported="true"
android:process=":sync">
<intent-filter>
<action
android:name="android.content.SyncAdapter"/>
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter" />
</service>
Run Code Online (Sandbox Code Playgroud)
虽然将android:exported
属性设置为true
服务(使Android系统能够到达它)是有意义的,但我对如何在访问权限方面将其束缚有点困惑.我不希望除我的应用程序和Android系统之外的任何人都可以访问该服务.
也许有点天真我已经为此创建了自己的许可:
<permission
android:name="com.myapp.permission.SYNC_ADAPTER"
android:protectionLevel="signatureOrSystem" />
Run Code Online (Sandbox Code Playgroud)
但是阅读一下这个protectionLevel
让我更加惊讶.谷歌说:
请避免使用此选项[...]"signatureOrSystem"权限用于某些特殊情况,其中多个供应商将应用程序内置到系统映像中,并且需要明确共享特定功能,因为它们是一起构建的.
描述的场景远非我的用例.那么问题仍然存在:
如何保护我的同步服务,以便Android系统(但没有第三方应用程序)可以访问它?
任何澄清将不胜感激!
这个让我走向疯狂的边缘!
我有一个活动,我用onClickListener初始化一个Button视图,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myLayout);
mMyButton = (Button) findViewById(R.id.myButtonId);
mMyButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showDialog(ID_MYDIALOG);
}
});
}
Run Code Online (Sandbox Code Playgroud)
我还编写了自己的对话框构建器类(单例),因为我在我的应用程序中有几个其他的Activity,它将使用一组通用的对话框,因此在onCreateDialog(int id)
我调用的给定Activity 的函数中:
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog;
switch (id) {
case ID_MYDIALOG:
dialog = DialogBuilder.getInstance().getMyDialog(this, mUri, mListener);
break;
default:
dialog = null;
break;
}
return dialog;
}
Run Code Online (Sandbox Code Playgroud)
在mUri
和mListener
变量定义在其他地方,我已经验证它们是有效的.单例DialogBuilder
类的相关部分如下所示:
public AlertDialog getMyDialog(Context context, Uri uri, DialogInterface.OnClickListener listener) {
// Inflate the custom body …
Run Code Online (Sandbox Code Playgroud) 我的主要能力在于Java(Android).我已经进入这个行业足够长的时间来实现正确测试的好处,我想我对如何测试生产代码以及如何构建测试架构有一些成熟的想法.
最近我倾向于越来越多地参与PHP编码.到目前为止,我所拥有的几个PHP项目或多或少是针对不同慈善活动的直接主页,而且"手动测试用例"就足够了.
但我现在正在为一个付费客户规划一个更大的PHP项目(一个完整的,基于REST的Web应用程序,具有繁重的数据库后端,即不是"欢迎来到我的主页"项目).我意识到文本文档中列出的一组手动测试指令是不够的.我需要一个适当的自动化测试框架,就像Java的JUnit框架,但是对于PHP.
那里有PHP代码的生存"行业标准"测试框架(最好是开源)吗? 我已经简要地阅读了PHPUnit和SimpleTest框架.根据你们的推荐他们是否值得推荐?
设置项目参数:PHP是其中一项要求,因此您无需用精力来说服我更好的网络平台等(但我很乐意阅读您可能拥有的任何附注和提示,但是, - 未来的项目:-)
我正在编写一个有两种"模式"的应用程序; 一种视图模式和一种编辑模式.该应用程序公开了两个主要/启动器活动(比如A和D),这些活动又有自己的活动链(分别为B,C和E,F).两个入口点活动A和D将在主屏幕中显示两个带有单独标签的图标,并且两个链从不交叉,即一旦您在具有活动A的查看模式下启动应用程序,您可以来回走动的唯一路线是A,B,C,如果您在具有活动D的编辑模式下启动应用程序,则唯一可用的活动链是D,E,F.
现在,我的问题是如果启动应用程序,例如查看模式(活动链A,B,C)并按下该链中任何活动的主页按钮,我会回到主屏幕(当然)但是如果我那么在编辑模式下重新启动应用程序(活动链D,E,F)我按下主页按钮(即错误链中的活动)时进入我正在进行的活动 - 而不是编辑模式的预期入口点; 活动d.
我该如何解决这个问题?
我曾尝试各种组合android:noHistory
,android:clearTaskOnLaunch
和其他属性在AndroidManifest.xml
为参与活动.但它们似乎只影响了活动,而不是整个链条.
当我按下Home按钮时,我想从历史堆栈中删除整个活动链(A,B,C或D,E,F)但是当我还在链中时仍然保持堆栈完整(我想要能够从活动B按下后退按钮并进入活动A …
我只是在设计一个更大的数据库架构.它将包含一组表,几个视图和一些存储过程.由于它是一个较大类型的数据库,并且处于开发的早期阶段(实际上它仍然只处于早期设计阶段),我觉得需要一个测试套件来验证重构期间的完整性.
就应用程序逻辑而言,我非常熟悉测试概念,包括服务器端(主要是PHPUnit)和客户端(Selenium和Android测试基础架构).
但是,我如何测试我的数据库架构?
是否存在某种类似的测试策略和工具,一般用于数据库,特别是MySQL?
在更改基础表后,如何验证我的视图,存储过程,触发器以及上帝知道什么仍然有效?
我是否必须使用PHP层包装数据库以启用数据库逻辑测试(存储过程,触发器等)?
public class LooperThread extends Thread {
private Handler handler = null;
public Handler getHandler() {
return handler;
}
@Override
public void run() {
Looper.prepare();
handler = new Handler();
Looper.loop();
}
}
class Helper {
private static LooperThread databaseThread = null;
static {
databaseThread = new LooperThread();
databaseThread.start();
}
public void postRunable(Runnable r) {
databaseThread.getHandler().post(r);
databaseThread.getHandler().sendMessage(new Message());
}
}
//ui thread.
class UIActivity extends Activity {
private Helper helper = new Helper();
public void onCreate(Bundle savedInstanceState) {
helper.postRunnable(new Runnable() {
public …
Run Code Online (Sandbox Code Playgroud) android ×10
testing ×2
back-stack ×1
frameworks ×1
handler ×1
listviewitem ×1
mysql ×1
php ×1
service ×1
spinner ×1
string ×1
unit-testing ×1
xml ×1