为什么XML ID名称约定与Java名称约定不同?

时间:2017-05-21 15:37:28

标签: java android naming-conventions butterknife

我查看了几个Android项目。为什么通常的做法是使用带有下划线的小写字母用于XML ID?

XML中的

@+id/name_text <!-- sometimes with "_view" suffix, sometimes without -->
Java中的

TextView nameTextView = // ...

我建议使用以下ID:@+id/nameTextView

实际上我是这样做的。会有什么缺点?

如果XML ID和字段名称遵循相同的模式,则特别是数据绑定可以更短(例如使用ButterKnife)。在这种情况下,我们可以省略注释中的XML ID:

@BindView TextView nameTextView;

1 个答案:

答案 0 :(得分:1)

Java还没有这样的功能,但是对于Kotlin:Kotlin Android Extensions

如果您的视图是这样声明的(在 activity_main.xml 中):

hello.setText("Hi!")

你可以在你的Activity中使用它:

import kotlinx.android.synthetic.main.activity_main.*

唯一需要做的就是将它添加到要使用视图的Kotlin文件中:

apply plugin: 'kotlin-android-extensions'

当然在项目本地build.gradle文件中添加依赖项:

    public async void LogOn(IUser user, string domain, bool remember, TimeSpan timeout)
    {
        var context = AccessorsHelper.HttpContextAccessor.HttpContext;

        await context.SignOutAsync(IdentityConstants.ApplicationScheme);

        var claims = new List<Claim>
        {
            new Claim(ClaimsIdentity.DefaultNameClaimType, user.GetId().ToString())
        };

        claims.AddRange(user.GetRoles().Select(role => new Claim(ClaimsIdentity.DefaultRoleClaimType, role)));

        await context.SignInAsync(IdentityConstants.ApplicationScheme,
            new ClaimsPrincipal(new ClaimsIdentity(claims, "AuthenticationType")), // AuthenticationType is just a text and I do not know what is its usage.
            new AuthenticationProperties
            {
                IsPersistent = remember,
                ExpiresUtc = DateTimeOffset.UtcNow.Add(timeout)
            });
    }