【问题标题】:OnActivityResult ()活动结果 ()
【发布时间】:2013-02-09 00:57:43
【问题描述】:

我有代码可以让我从计算器中获取价值并进一步使用它:

//-----------------This section creates the keypad functionality
for (int o = 0; o < keybuttons.length; o++) {
    final int n = o;
    keybuttons[o] = (Button) findViewById(data.keyIds[n]);
    keybuttons[o].setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            try {
                String tmp = texts[selectEdit].getText()
                    .toString();
                switch (n) {
                case 3:
                    texts[selectEdit].setText(tmp.substring(0, tmp.length() - 1));
                    break; //get cursor position and delete char
                case 7:
                    {
                        // Create intent for RealCalc.
                        Intent intent2 = new Intent("uk.co.quarticsoftware.REALCALC");
                        double x = 0; // Set initial value (double).
                        if (!texts[selectEdit].getText()
                            .toString()
                            .equals("")) {
                            x = Double.valueOf(texts[selectEdit].getText()
                                .toString());
                        }
                        intent2.putExtra("X", x);
                        // Launch calculator
                        try {
                            startActivityForResult(intent2, 0);
                        } catch (ActivityNotFoundException e) {
                            Intent intent = new Intent(Intent.ACTION_VIEW,
                            Uri.parse("market://details?id=uk.co.nickfines.RealCalc"));
                            try {
                                startActivity(intent);
                            } catch (ActivityNotFoundException f) {
                                // Google Play Store app not available.
                            }
                        }
                        break;
                    } //open Calculator
                case 11:
                    {
                        if (!tmp.contains("E")) texts[selectEdit].setText(tmp + "" + keybuttons[n].getText());
                        break;
                    } //check for E if dont have do default case
                case 15:
                    {
                        TL.setVisibility(View.GONE);
                        break;
                    } //simulate back button
                default:
                    {
                        texts[selectEdit].setText(tmp + "" + keybuttons[n].getText());
                        //get cursor start and end and get entire String
                        // replace selected String with button text
                        //insert back
                        break;
                    }
                } //end of switch
            } //end of try
            catch (ActivityNotFoundException e) {
                Intent intent = new Intent(Intent.ACTION_VIEW,
                Uri.parse("market://details?id=uk.co.nickfines.RealCalc"));
                // Calculator not installed
            } //calculator.num=n;
            catch (Exception e) {
                StringWriter sw = new StringWriter();
                e.printStackTrace(new PrintWriter(sw));
                EasyPhysActivity.error = sw.toString();
            }
        }

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (resultCode == Activity.RESULT_OK) {
                // User pressed OK.
                double value = data.getDoubleExtra("X", Double.NaN);
                if (Double.isNaN(value)) {
                    // Calculation result was "Error".
                } else {
                    // Calculation result ok.
                }
            } else {
                // User pressed cancel or back button.
            }
        }
    });

}
//----------------------------------------

但它不喜欢这三行:

@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

如果我删除@Override 它会变得更好,但它仍然显示错误

super.onActivityResult(requestCode, resultCode, data);

这里出了什么问题?

【问题讨论】:

  • 错误是什么?请修正您的代码格式。
  • 它给出了我在底部反复写下的三行错误
  • 除了导致错误的代码之外,请发布错误消息
  • 错误是“void is an invalid type for the variable onActivityResult”

标签: java android methods


【解决方案1】:

您不能在OnClickListener 中覆盖onActivityResult,因为它在基类中不存在。移动您的 onActivityResult 代码,使其位于您的 Activity 类中,而不是 OnClickListner

【讨论】:

  • 但我做不到,因为我需要计算器在 7 号时启动
  • @L.G.我没有说移动启动计算器的Intent,只是定义了OnActivityResult方法,它必须属于Activity,否则它将不起作用。
  • @L.G.我想你误会了。 onActivityResult 在您的计算器完成后调用。它与首先启动计算器无关。
  • 我试图将它从 OnClickListener 中取出,但它仍然给出此错误“void is an invalid type for the variable onActivityResult”
  • @L.G.然后你仍然把它放在错误的范围内,听起来你把它移出了OnClickListner 并进入了一个方法定义。它应该与onCreate在同一级别定义@
猜你喜欢
  • 1970-01-01
  • 2021-02-24
  • 2018-03-15
  • 1970-01-01
  • 2013-02-18
  • 2018-01-24
  • 1970-01-01
  • 2013-02-18
  • 2016-04-29
相关资源
最近更新 更多