我正在尝试创建一个读取NFC标记的应用程序,并检查字符串数组中字符串的标记,然后在另一个活动上设置文本。我已经让它工作,以便它检查字符串是否存在并在新活动中设置文本,但我希望能够指定我希望它在数组中检查哪个字符串,因为在该数组中将有多个字符串我想要在新活动中显示的NFC标签。我试过这个:
result == getResources().getString(R.string.test_dd)
以下是相关代码:
String[] dd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dd = getResources().getStringArray(R.array.device_description);
}
@Override
protected void onPostExecute(String result) {
if (result != null) {
if(doesArrayContain(dd, result)) {
Vibrator v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(800);
Intent newIntent = new Intent(getApplicationContext(), TabsTest.class);
Bundle bundle1 = new Bundle();
bundle1.putString("key", result);
newIntent.putExtras(bundle1);
startActivity(newIntent);
Toast.makeText(getApplicationContext(), "NFC tag written successfully!", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getApplicationContext(), result + " is not in the device description!", Toast.LENGTH_SHORT).show();
}
}
}
修改
以下是使用的方法,请任何人都可以帮我解决这个问题:
public static boolean doesArrayContain(String[] array, String text) {
for (String element : array) {
if(element != null && element.equalsIgnoreCase(text)) {
return true;
}
}
return false;
}
答案 0 :(得分:1)
为了比较字符串(和其他对象)的相等性,请使用equals()
方法。 ==
比较对象的标识(相同的字符串对象)。
答案 1 :(得分:0)
以下是我找到的解决方案:
创建一个新方法:
public static boolean stringCaseInsensitive(String string, String result) {
if(string != null && string.equalsIgnoreCase(result)) {
return true;
}
return false;
}
然后像这样打电话:
if(stringCaseInsensitive(getResources().getString(R.string.test_dd), result))
{
Intent newIntent = new Intent(getApplicationContext(), TabsTest.class);
Bundle bundle1 = new Bundle();
bundle1.putString("key", result);
newIntent.putExtras(bundle1);
startActivity(newIntent);
Toast.makeText(getApplicationContext(), "NFC tag written successfully!", Toast.LENGTH_SHORT).show();
}
else{
}