2013-02-09 72 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