2013-02-09 73 views
1

我有代码,应该让我从计算器采取价值,进一步使用它:OnActivityResult()

//-----------------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); 

这里发生了什么问题?

+0

什么是错误?并请修复您的代码的格式。 – 2013-02-09 01:08:49

+0

它给出了我在底部反复写下的三行中的错误 – 2013-02-09 01:15:35

+0

除了导致错误的代码之外,请发布*错误消息*。 – 2013-02-09 01:18:03

回答

1

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

+0

但我不能这样做,因为我需要该计算器将启动案例7 – 2013-02-09 01:12:07

+0

@ L.G。我没有提到移动启动计算器的'Intent',只是OnActivityResult方法的定义,它必须属于一个'Activity',否则它将不起作用。 – iagreen 2013-02-09 01:17:43

+2

@ L.G。我认为你误解了。在您的计算器结束后,调用'onActivityResult'。它与首先启动计算器无关。 – 2013-02-09 01:19:35