有什么理由不在我的代码中使用R.id. <id_name>作为标识符吗?</id_name>

时间:2011-11-11 12:22:58

标签: android

有没有理由不使用R.id.&lt; id_name&gt;作为我代码中的const?

例如,在我的ids.xml文件中,我有:

<item name="status_running" type="id"/>
<item name="status_finished" type="id"/>
<item name="status_error" type="id"/>

允许我做以下事情:

switch (status) {
    case R.id.status_running:
         mProgressTextView.setText("Running");
         break;
    case R.id.status_finished:
         mProgressTextView.setText("Finished");
         setNextSyncTime();
         break;
    case R.id.status_error:
         mProgressTextView.setText("Error: " + intent.getStringExtra(Intent.EXTRA_TEXT));
         break;
    default:
         break;
}   

有什么理由不使用这样的R.id值?

3 个答案:

答案 0 :(得分:2)

使用这样的ID似乎是合理的。您的代码示例的唯一问题可能是android构建系统中的最新更改。库项目中的资源ID不再是常量,不能在switch语句中使用。

如果此代码将成为库项目的一部分,这只会影响您,至少需要考虑这一点。

有关详细信息,请参阅博客文章Changes to Library projects in Android

答案 1 :(得分:0)

您正在尝试将名称值作为ID访问...您应该为id设置一个值。

因为您正在使用项目列表(我推测),您应该以不同的方式访问它。

答案 2 :(得分:0)

只要你不将它存储在数据库中,它就像其他任何东西一样只是一个常量int。但是如果你将存储这个值(比如文件或数据库),你可能会遇到问题,因为AFAIK id值可能会在构建之间发生变化。