2013-08-18 50 views
2

我在我的活動中有一個按鈕和一個編輯文本框,按下按鈕,我將edittext中的所有文本複製到剪貼板。在我檢查的所有設備中,代碼工作正常,除了在Android 2.3.6版本下運行的三星GT-S6802。 我無法找到問題。請幫助。複製粘貼不工作在Android 2.3.6(薑餅)

btn3.setOnClickListener(new View.OnClickListener() { 
      @SuppressLint("NewApi") 
      @Override 
      public void onClick(View v) { 
       if (edit.getText().length() > 0) { 
        ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
        clipboard.setText(edit.getText()); 
        Toast.makeText(getApplicationContext(), 
          "Text is Copied Press long to paste anywhere", 
          Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 
+0

當代碼工作正常,那麼最新的問題是什麼? – KOTIOS

+0

按下該複印按鈕時,該應用程序在Samsung GT-S6802中崩潰。 –

+0

是否可以粘貼logcat? – KOTIOS

回答

5

對於大於HoneyComb的版本,ClipboardManager的包從android.text.ClipboardManager更改爲android.content.ClipboardManager。正確的代碼如下所示。

int currentapiVersion = android.os.Build.VERSION.SDK_INT; 
          if (currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB) { 
           android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
           ClipData clip = ClipData.newPlainText("label", 
             edit.getText()); 
           clipboard.setPrimaryClip(clip); 
          } else { 
           android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
           clipboard.setText(edit.getText()); 
          } 
0

大概類android.content.ClipboardManager是進口的,其中只有從API> = 11的工作原理。由於2.3.6是API 10,應用程序崩潰我猜說java.lang.NoClassDefFoundError

Android clipboard code that works on all API levelsHow to copy text programmatically in my Android app? 的解決方案工作。不過,dalvikvm會報告錯誤,因爲它會嘗試驗證所有類,但該應用程序不會崩潰。

爲了防止加載無法驗證的類,請參閱http://android-developers.blogspot.de/2010/07/how-to-have-your-cupcake-and-eat-it-too.html,其中正確版本相關的抽象類在運行時實例化。