2016-07-19 147 views
1

我在Android中遇到了一個奇怪的「問題」或者可能是一個「bug」。 我經常爲我的應用程序使用ClipboardManager。 但是,如果我在幾秒鐘內使用它兩次,我總是得到一個NullPointerException。 我認爲當我訪問它時,我的剪貼板尚未填滿,但這似乎是一個非常愚蠢的想法... 有沒有人遇到同樣的問題,或者我做錯了什麼? 我在String text = item.getText()。toString();ClipData有時在Android中爲空

錯誤消息:

顯示java.lang.NullPointerException:嘗試在at.co.netconsulting上的空對象引用 調用接口方法 'java.lang.String中java.lang.CharSequence.toString()' .leotranslater.SettingsActivity $ 1 $ 3.onPrimaryClipChanged

感謝每一個提示或提前幫助!

以下是一段我的代碼:

final ClipboardManager myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
        myClipboard.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() { 
         @Override 
         public void onPrimaryClipChanged() { 
          ClipData cp = myClipboard.getPrimaryClip(); 
          if(cp.getItemCount()>0) { 
           ClipData.Item item = cp.getItemAt(0); 
           if (item == null) { 
            Toast.makeText(getApplicationContext(), "Item is null", Toast.LENGTH_LONG).show(); 
           } else { 
            if(item!=null) { 
             String text = item.getText().toString(); 
             Toast.makeText(getApplicationContext(), "Sie suchen nach dem Wort: " + text, Toast.LENGTH_LONG).show(); 
             Intent msgIntent = new Intent(SettingsActivity.this, ServiceTranslator.class); 
             msgIntent.putExtra("ClipBoardData", text); 
             startService(msgIntent); 
            } 
           } 
          } 
         } 
        }); 
       } 

回答

1

我認爲這可能是解決方案。

String text = item.coerceToText(getBaseContext()).toString(); 

展望的文件,據說 如果你想要的是剪輯數據的文字表述,你 *可以使用便捷的方法{@link編號coerceToText Item.coerceToText}。

我希望能解決我的問題!