有没有办法从颜色资源中获取color-int?我试图获取资源(R.color.myColor)中定义的颜色的单个红色,蓝色和绿色组件,以便我可以将三个搜索栏的值设置为特定级别.
有关可能有助于在搜索结果中显示此问题的另一个用例的更多信息,我想将alpha应用于我的资源中定义的颜色.
使用@ sat的正确答案:
__PRE__
我发现R.string
将硬编码字符串保留在我的代码中非常棒,我想继续在一个实用程序类中使用它,该实用程序类与我的应用程序中的模型一起生成输出.例如,在这种情况下,我正在从活动之外的模型生成电子邮件.
是否可以在getString
外面使用Context
或Activity
?我想我可以通过当前的活动,但似乎没必要.如果我错了请纠正我!
编辑:我们可以不使用而访问资源Context
吗?
我试图在非活动类中使用getResources方法.如何获取对"resources"对象的引用,以便我可以访问存储在resources文件夹下的xml文件?
例:
XmlPullParser xpp = getResources().getXml(R.xml.samplexml);
Run Code Online (Sandbox Code Playgroud) 在为Android编程时,有时您必须使用静态方法.但是当您尝试以静态方法访问资源时,getString(R.string.text)
您将收到错误.使其静止不起作用.
有没有人知道这个好方法?Android中的资源文件对于使用不同语言创建内容或更改文本非常有用.
我正在尝试将配置(例如URL/etc)放入资源文件夹中以供实用程序类使用.但是,我不想从各地的活动中传递Context.我希望能够通过路径名访问资源(似乎资产/是为此用途设计的),而不使用上下文来访问资源.
在这种特殊情况下,我希望单例在实例化时在配置中使用某些东西.在实例化期间,除了那一次之外,它不需要任何资源.因此,每次调用getInstance()时都必须传入一个Context,这将是一个完全的浪费.
此外,这特定于App的配置,不应存储在共享系统文件或类似的任何内容中.
我想创建一个静态哈希表来将字符串转换为整数.需要注意的是,我想在XML文件中的几个列表中使用我定义为资源的字符串.
我只能使用资源ID写这个:
public class MyActivity extends Activity {
private static Map<Integer, Integer> views = new HashMap<Integer, Integer>();
static {
views.put(R.string.full_text, MessageTable.VIEW_FULL);
views.put(R.string.only_text, MessageTable.VIEW_MSG);
views.put(R.string.tag_text, MessageTable.VIEW_TAGMSG);
}
Run Code Online (Sandbox Code Playgroud)
我没有错误,但我真正需要做的是这样的事情:
public class MyActivity extends Activity {
private static Map<String, Integer> views = new HashMap<String, Integer>();
static {
views.put(getResources().getString(R.string.full_text), MessageTable.VIEW_FULL);
views.put(getResources().getString(R.string.only_text), MessageTable.VIEW_MSG);
views.put(getResources().getString(R.string.tag_text), MessageTable.VIEW_TAGMSG);
}
Run Code Online (Sandbox Code Playgroud)
这给了我在Eclipse中的以下错误:
Cannot make a static reference to the non-static method getResources() from the type ContextWrapper
Run Code Online (Sandbox Code Playgroud)
这个消息很有意义,但没有意义的是资源无法从静态块中访问,人们会认为静态变量是自定义创建的以利用资源.
我想我可以在对象构造函数中填充Hash表,但这意味着要在错误的位置执行它.
目前,在我的应用程序中,我有以下课程:
public class MyApp extends Application {
private static Context context;
public void onCreate(){
super.onCreate();
MyApp.context = getApplicationContext();
}
public static Context getContext() {
return MyApp.context;
}
}
Run Code Online (Sandbox Code Playgroud)
我使用它来在既不是活动也不是片段的类中使用Context.使用存储在此类上的上下文与使用和活动作为上下文之间有什么区别?有这个课程是一个好习惯,还是应该为任何需要它的班级提供一个活动作为背景?
谢谢.
经过一段时间的寻找虫子后,事实证明:
public class MainActivity extends BaseActivity { // BaseActivity extends Activity
public MainActivity() {
super();
getApplicationContext(); // NPE here
}
}
Run Code Online (Sandbox Code Playgroud)
为什么?这记录在哪里?
升级Froyo
所以,我正在尝试调试我的应用程序,并且我正在使用以下代码行评估表达式:
resources.getString(R.string.my_string);
Run Code Online (Sandbox Code Playgroud)
我应该从 strings.xml 获取字符串,但出现错误:
Method threw 'android.content.res.Resources$NotFoundException' exception.
Run Code Online (Sandbox Code Playgroud)
有人知道为什么我在评估时不能接近资源吗?
谢谢大家!:)
我有一个String资源:
strings.xml
<resources>
<string name="myString">stringName</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
如何从非活动类中获取字符串?
我做不到 getResources().getString(R.string.myString)