我知道在stackOverflow上多次询问这个问题。但是我仍然无法获得 等于 的功能,以使两个字符串正常工作。
这就是我正在做的事情以及我面临的问题。 我以下列方式调用AsyncTask方法
String ServerResponse = realTimeTask.execute("http://www.xyz.co/tests/ems/realtimequery.php?q="+ newString).get();
newString变量是一个动态变量,我从我在我的应用程序中使用的导航抽屉中获取。
String变量newString可以根据导航抽屉中单击的项目具有7个不同的值。
我想要做的是在动态变量newString和静态变量之间进行字符串比较的简单字符串让我们说
String aVar = "Stenter";
现在我尝试使用比较方式
if (newString.equals(aVar)) {
System.out.println("This is a stenter");
}
else{
System.out.println("This is not a stenter");
}
但是没有运气,每次我用newString运行这个条件也等于Stenter。我在else部分得到了结果。
有人能指出我在哪里错了吗?请不要低估这个问题,因为我已经在互联网上到处查看,然后在等待并尝试了一天之后发布了我的问题。
提前致谢!
----------------- EDIT ----------------------------- ------------------------- 这是代码,它将告诉我如何声明newString
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_machine_details);
String newString;
if (savedInstanceState == null) {
Bundle extras = getIntent().getExtras();
if(extras == null) {
newString= null;
} else {
newString= extras.getString("keyName");
Toast.makeText(this, newString, Toast.LENGTH_SHORT).show();
}
} else {
newString= (String) savedInstanceState.getSerializable("keyName");
Toast.makeText(this, newString, Toast.LENGTH_SHORT).show();
}
mDrawerList = (ListView)findViewById(R.id.navList);
mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
mActivityTitle = getTitle().toString();
addDrawerItems();
setupDrawer();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
RealTimeTask realTimeTask = new RealTimeTask();
try {
String ServerResponse = realTimeTask.execute("http://www.xyz.co/tests/ems/realtimequery.php?q="+ newString).get();
String aVar = "Stenter";
System.out.println(newString);
newString.trim();
if (newString.equalsIgnoreCase(aVar)) {
System.out.println("This is a stenter");
}
else{
System.out.println("This is not a stenter");
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
调用asyncTask方法后,if条件位于try catch块中。
答案 0 :(得分:1)
可能是不匹配的情况你可以尝试
1) if (newString.matches(aVar)){
}
或
2) if (newString.equalsIgnoreCase(aVar)){
}
或
尝试newString.trim()
然后比较
trim()方法删除变量之后和之前的空格,如
String s="abc "; //space at last
s.trim()将删除最后一个空格并返回"abc"