2016-07-19 5 views
1

У меня возникла странная «проблема» или, может быть, «ошибка» в Android. Я использую ClipboardManager для своего приложения довольно часто. Но если я использую его в течение нескольких секунд дважды, я всегда получаю исключение NullPointerException. Я думаю, что я буфера обмена уже заполнен, когда я обращаюсь к нему, но это кажется действительно глупой идеей ... Кто-нибудь сталкивался с той же проблемой, или я делаю что-то неправильно? Я получаю сообщение об ошибке в String text = item.getText(). ToString();ClipData иногда Null в Android

сообщение

Ошибки:

java.lang.NullPointerException: Попытка вызвать метод интерфейса 'java.lang.String java.lang.CharSequence.toString()' на нулевой ссылке на объект на at.co.netconsulting .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 Item # coerceToText Item.coerceToText}.

Надеюсь, что решит мою проблему!