学习Android编程我尝试运行以下示例:
https://abhiandroid.com/programming/shared-preference
这是activity_login.xml中我的EditText的片段
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/prompt_password"
android:imeActionId="@+id/login"
android:imeActionLabel="@string/action_sign_in_short"
android:imeOptions="actionUnspecified"
android:inputType="textPassword"
android:maxLines="1"
android:singleLine="true"/>
我的IntelliJ IDEA仍然在行中显示错误:
android:imeActionId =“ @ + id / login”
说法:资源类型无效,需要整数值
在LoginActivity.java中自然会出现错误“无法解析符号登录”:
@Override
public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
if (id == R.id.login || id == EditorInfo.IME_NULL) {
attemptLogin();
return true;
}
return false;
}
这是我的build.gradle:
android {
compileSdkVersion 26
buildToolsVersion "28.0.2"
defaultConfig {
applicationId "com.tcc.andsharedpreferences"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support.constraint:constraint-layout:1.1.3'
compile 'com.android.support:design:26.1.0'
testCompile 'junit:junit:4.12'
androidTestCompile('com.android.support.test.espresso:espresso-core:3.0.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
}
你能帮助我吗?我不明白为什么Android应该抱怨imeActionId类型,如果应该创建它(@ + id)?
最佳答案
您可以在资源中定义一个整数值:
<!--res/values/integers.xml-->
<resources>
<item type="integer" name="customImeActionId" format="integer">100</item>
</resources>
并像这样使用它:
android:imeActionId="@integer/customImeActionId"
有关更多详细信息,请参考此SO question