【问题标题】:Basics ---> Checking strings using if else to set value of an int, possible wrong use of onResume基础 ---> 检查字符串使用 if else 设置 int 值,可能错误使用 onResume
【发布时间】:2012-11-26 14:59:39
【问题描述】:

所以我仍然在这里开发我的第一个小应用程序,它是 Android 和 Java 的新手,所以我在这里遇到了一个基本的小问题。我的第一个问题的答案真的很有帮助,所以在研究并没有想出任何东西之后,我想我会寻求更多帮助!

这个想法是,用户在另一个屏幕上做出选择 A、B、C 或 D,并且这些选择作为字符串通过意图传递。 OnResume 检查选项是否不为空,并设置与该字符串对应的整数。稍后当用户按下另一个按钮时,一些 if else 逻辑会检查该 int 并根据所选择的执行和操作。问题是应用在 onResume 时崩溃了。

我了解到我必须使用 equals(string) 来比较字符串引用,但也许问题是我正在尝试比较一个字符串与文字字符串的引用?任何帮助将不胜感激。 谢谢!

        protected void onResume() {
    super.onResume();

    // Get the message from the intent
    Intent intent = getIntent();
    String choice = intent
            .getStringExtra(ExtensionSetupSlector.TORQUE_SETUP);

    // Create the text view
    TextView displayChoice = (TextView) findViewById(R.id.displayChoice);
    if (!choice.equals("")){
    displayChoice.setText(choice);

    if (choice.equals("A")) {
        myChoice = 1;
    }
    if (choice.equals("B")) {
        myChoice = 2;
    }
    if (choice.equals("C")) {
        myChoice = 3;
    }
    if (choice.equals("D")) {
        myChoice = 4;
    }

}
}

myChoice 是在 ...extends Activity{ 之后立即声明的,而且我不太确定这是否真的应该在 onResume 中,但在我开始尝试在 onResume 中设置 myChoice 之前它就可以工作(当我只是显示选择)。再次感谢!

【问题讨论】:

  • 你应该发布一个 LogCat。另外,您说 onResume 检查字符串是否为空,但是您没有 if 检查 if (string == null)
  • 首先确保您通过使用 Log 从 getIntent 中获得选择价值
  • @A--C,谢谢,这显然正是我所需要的。我将 if (!choice.equals("")){ 更改为 if (choice != null) 并且它有效!
  • Java 最大的特点之一就是空引用。请务必牢记它们。

标签: android string if-statement int


【解决方案1】:

更改 if (!choice.equals("")) 以检查 null。否则,您的应用会尝试访问空引用并崩溃。

【讨论】:

    猜你喜欢
    • 2019-02-15
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 2018-03-25
    相关资源
    最近更新 更多