我对android非常新,我很困惑。我试图说明对于变量x(可以是a,b或c),有一个相应的整数值(即0,1和2)
String mpee = x;
int mpef = 0;
int mpev = 0;
if (mpee == "a") { mpef = mpev + 0; }
if (mpee == "b") { mpef = mpev + 1; }
if (mpee == "c") { mpef = mpev + 2; }
int mpp = mpef;
输出将为int mpp。就Eclipse而言,代码没有问题,但是当我运行它时,应用程序会挂起。以下是logcat。
06-05 13:29:49.014: E/AndroidRuntime(1608): FATAL EXCEPTION: main
06-05 13:29:49.014: E/AndroidRuntime(1608): java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.exa.huy/com.example.exa.huy}: android.content.res.Resources$NotFoundException:
String resource ID #0x0
06-05 13:29:49.014: E/AndroidRuntime(1608): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
06-05 13:29:49.014: E/AndroidRuntime(1608): at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
06-05 13:29:49.014: E/AndroidRuntime(1608): at
android.app.ActivityThread.access$600(ActivityThread.java:141)
06-05 13:29:49.014: E/AndroidRuntime(1608): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
06-05 13:29:49.014: E/AndroidRuntime(1608): at
android.os.Handler.dispatchMessage(Handler.java:99)
06-05 13:29:49.014: E/AndroidRuntime(1608): at android.os.Looper.loop(Looper.java:137)
我做错了什么?
答案 0 :(得分:0)
你必须改变你比较字符串的方式 - 因为String是一个对象,它有一个内置的比较方法equals(),其中输入是你想要比较你的字符串的字符串。使用==
比较它们是否是相同的对象而不是它们的字符串匹配,这看起来不像您打算做的那样。此外,if-else
块可能比3个额外语句更好,就像填充if
条件一样,它不会费心检查其余条件,并且在您的情况下将工作,因为每个条件是互斥的。
String mpee = x;
int mpef = 0;
int mpev = 0;
if (mpee.equals("a")) { mpef = mpev + 0; }
else if (mpee.equals("b")) { mpef = mpev + 1; }
else if (mpee.equals("c")) { mpef = mpev + 2; }
int mpp = mpef;
从LogCat看起来你被称为你无法找到的参考。请发布更多代码,以便我们确切地知道错误是什么。在这种情况下,您似乎使用整数值0
调用引用,该值不存在。您是否尝试在布局中引用某个视图?